我目前有一个我公司的内部站点,我们的客户支持用户将在其中上传来自我们客户的文件。最初,我计划使用 mysql 和受保护的共享网络文件夹的帮助,并使用 mysql 来保存文件名和路径。但是,我们也将 ImageNow 用于其他进程。有谁知道 ImageNow 是否适用于软件本身之外的 javascript 和 php?我是 ImageNow 的新手,因此不胜感激。
5 回答
logObArray = getDocLogobArray(workingDoc);
for (var i=0; i<logObArray.length; i++)
{
var docObj = logObArray[i];
var filePath = docObj.filePath;
var fileType = docObj.fileType;
var ftToCheck = fileType.toUpperCase();
var phsobID = docObj.phsobId;
//write OSM info to the file, you'll have to add the other code around this but premise is correct and tested
var outRow = filePath;
outRow = outRow + '\n';
if (Clib.fputs(outRow, outCsvFP) >= 0)
{
debug.log('DEBUG', 'Wrote OSM Path [%s] to file successfully.\n', filePath);
stats.inc('Wrote OSM Path to file');
}
}
不幸的是,ImageNow 不允许您获取它存储在 Perceptive Software 提供的工具之外的信息。即使您直接深入 SQL 数据库并查看存储文件的文件系统,也无法获取信息。ImageNow 将未加密的文件存储在文件系统上,这很好,并且它将这些图像的元数据存储在数据库中易于搜索的表中。但是,从元数据到它在将其存储到数据库之前加密的文件系统的路径。因此,如果您尝试从元数据到图像,那么您能得到的最远距离就是加密路径。没有解密密钥,您将无法访问图像。
但是,有一种方法可以编写代码来使用 ImageNow 数据。您需要附加消息代理 - 您需要从 Perceptive 购买。这为使用 Web 服务和 SOAP 获取 ImageNow 数据打开了接口。
ImageNow 有一种脚本语言,可让您通过数据库中的加密文件路径。文件路径在 INLogicalObject 的未记录成员中可用。以下用于访问的详细信息取自以下博客文章。在 ImageNow 中访问加密文件路径
搜索 ImageNow 6.x 特定对象文档会发现 INLogicalObject 提供有关存储在文件系统中的实际文件的信息。但是,它不包含有关文件路径的任何信息。在对象的内部稍加检查就会发现它确实有一个文件路径字段,并且该值未加密。它是 INLogicalObject 的成员。以下非常简单的示例显示了查找单个文档并在控制台上显示其文件类型和未加密文件路径。
// get a single document
var results = INDocManager.getDocumentsBySqlQuery( "", 1, var more );
if ( results )
{
var doc = results[0];
doc.getInfo();
// get a single page for the document
var logob = INLogicalObject( doc.id, -1, 1 );
logob.retrieveObject();
printf( "file type: %s\n", logob.filetype ); // this member is in the documentation
printf( "unencrypted file path: %s\n", logob.filepath ); // this member is not in the documentation
}
这是完整的解决方案。它获取根文件和后续页面。我发现的所有其他解决方案除了扫描文档的第一页之外什么都没有。将您的抽屉更改为您自己的抽屉名称(顺便说一句)。我希望这可以帮助别人。锁定人们内容的公司真的让我很生气。只需使用 intool.exe 实用程序。它位于安装的 /bin 文件夹中。调用是:intool --cmd run-iscript --file yourfile.js
var curDocId = 0;
var more = true;
// printf("curDocId : %s\n", curDocId );
while (more) {
var rulestext = "[drawer] = 'AR' AND [docID] > '" + curDocId + "'";
var items = INDocManager.getDocumentsByVslQuery(rulestext, 1000, more, "DOCUMENT_ID");
var start = items[0];
var dataDesc = new Array();
var headerDelim = "\03"
var dataDelim = "\02";
for (var line=1; line <= start; line++) {
var temp = items[line].split(headerDelim);
dataDesc[temp[1].toUpperCase()] = new Object();
dataDesc[temp[1].toUpperCase()].idx = line - 1;
dataDesc[temp[1].toUpperCase()].name = temp[1];
dataDesc[temp[1].toUpperCase()].datatype = temp[2];
}
for ( ; line < items.length; line++) {
var doc = new INDocument(items[line].split(dataDelim)[dataDesc["DOCUMENT ID"].idx]);
doc.id = items[line].split(dataDelim)[dataDesc["DOCUMENT ID"].idx];
doc.getInfo();
var masterDocId = doc.id;
var itCounter = 150;
var i = 1;
for( ; i <= itCounter; i++)
{
doc.getInfo();
var logob = INLogicalObject( doc.id, -1, i );
logob.retrieveObject();
if(logob && logob.logobCount > 0)
{
var fp = Clib.fopen("c:\\inowoutput.txt", "a");
var line = masterDocId + ',' + logob.id + ',' + logob.workingName + ',' + logob.filePath + '\n';
Clib.fputs(line, fp);
Clib.fclose(fp);
}
else
{
break;
}
}
curDocId = doc.id;
}
//printf("curDocId : %s\n", curDocId );
}
查看 ImageNow 中的外部消息代理 (EMA) 功能。它是一个免费模块,可在每个安装中使用。
EMA 允许您从 ImageNow 系统外部接收数据(例如,从 PHP 网络表单)。
要使用 EMA,您只需将 PHP 脚本插入到 IN_EXTERN_MSG 和 IN_EXTERN_MSG_PROP 表中。属性之一可能是通过 PHP 上传的文件的位置。
然后,您需要一个 iScript 来解析 EMA 表中的数据并在 ImageNow 中创建一个文档。
我之前已经构建了这样的解决方案,并且效果很好。