InDesign Server在数据合并时崩溃

时间:2018-09-18 14:04:54

标签: adobe-indesign extendscript mailmerge indesign-server

我正在尝试与InDesign Server进行非常基本的数据合并,并导致崩溃。 我从./InDesignServer -port 18383开始服务器,没有问题。 我用./sampleclient ./scripts/test.jsx调用脚本 .jsx看起来像这样:

var source = File("/Users/me/Desktop/InDesign Server/example/example.indd")
var destination = File("/Users/me/Desktop/InDesign Server/example/example.pdf")
var sourceData = File("/Users/me/Desktop/InDesign Server/example/example.csv")
var doc = app.open(source);

doc.dataMergeProperties.selectDataSource(sourceData);
doc.dataMergeProperties.dataMergePreferences.recordNumber = 1;
doc.dataMergeProperties.mergeRecords(); // <-- Crashes here

var myPDFExportPreset = app.pdfExportPresets.item(0);
app.documents.item(0).exportFile(ExportFormat.pdfType, destination, false, myPDFExportPreset);
app.documents.item(0).close(SaveOptions.no);
doc.close(SaveOptions.no);

InDesign Server响应:

Tue Sep 18 09:48:21 2018 INFO   [javascript] Executing Script
./InDesignServer: line 13: 30363 Segmentation fault: 11  "$installed_name" "$@"

然后崩溃。该脚本可以在InDesign CC Desktop中正常运行。服务器似乎在.mergeRecords()调用上崩溃。有什么想法吗?

编辑:我将代码修改为1)文件路径中没有空格2)在执行合并之前检查所有对象是否存在。

var source = File("/Users/me/Desktop/example/example.indd");
var destination = File("/Users/me/Desktop/example/example.pdf");
var sourceData = File("/Users/me/Desktop/example/example.csv");

var doc = app.open(source);
doc.dataMergeProperties.selectDataSource(sourceData);

if (source.exists && destination.exists && sourceData.exists) {
    try {
        app.consoleout("Performing merge...");
        doc.dataMergeProperties.mergeRecords(); // <-- Crashes here
    } catch (err) {
        app.consoleout(err);
    }
} else {
    app.consoleout("Something doesn't exist...");
}

它记录“正在执行合并...”,因此我的文件路径实际上指向已存在的文件。更重要的是,它完全可以解决崩溃问题,并且不会报告任何错误。

编辑2: 应当指出,这是启动sampleclient的终端窗口从IDS获取的错误:Error -1 fault: SOAP-ENV:Client [no subcode] "End of file or no input: Operation interrupted or timed out" Detail: [no detail]

2 个答案:

答案 0 :(得分:0)

如果其他人发现我的情况,找到了解决方案。 为什么在服务器中mergeRecords()似乎仍然是一个谜。

doc.dataMergeProperties.exportFile()

Collecandoo的道具:https://forums.adobe.com/thread/2478708

我的代码现在是:

var source = File("/Users/me/Desktop/example/example.indd");
var destination = File("/Users/me/Desktop/example/example.pdf");
var sourceData = File("Macintosh HD:Users:me:Desktop:example:example.csv");

var doc = app.open(source);
var myExport = File(doc.filePath + "/" + doc.name.split(".indd")[0] + ".pdf");  
doc.dataMergeProperties.dataMergePreferences.recordNumber = 3;
with (doc.dataMergeProperties.dataMergePreferences) {
			recordSelection = RecordSelection.ONE_RECORD;    
            }
			app.dataMergeOptions.removeBlankLines = true;  
                doc.dataMergeProperties.exportFile(myExport, "[High Quality Print]", ); 

仍然需要一些调整,但是它正在执行合并-这就是我所需要的。

答案 1 :(得分:0)

Adob​​e的人们注意到了这一点,并在InDesign Server 2019版本中修复了此问题。具有相似合并文档的相同脚本不再产生错误。

因此,对于解决方案,请更新到2019年。

更多信息: Adobe Forums Post