InDesign Server 在数据合并时崩溃
InDesign Server Crashing on Data Merge
我正在尝试与 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...");
}
它记录 "Performing merge..." 所以我的文件路径实际上指向存在的文件。更重要的是,它充满了崩溃,并且不报告任何错误。
编辑 2:
需要注意的是,这是启动sampleclient的终端window从IDS得到的错误:Error -1 fault: SOAP-ENV:Client [no subcode]
"End of file or no input: Operation interrupted or timed out"
Detail: [no detail]
已找到解决方案,如果其他人发现自己处于我的情况。
为什么 mergeRecords() 在服务器中似乎损坏仍然是个谜。
doc.dataMergeProperties.exportFile()
Colecandoo 的支持: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]", );
仍然需要一些调整,但它正在执行合并 - 这正是我需要的。
Adobe 的人员注意到了这一问题,并在 2019 版 InDesign Server 中解决了这个问题。具有相似合并文档的相同脚本不再产生错误。
所以,为了解决问题,请更新到 2019 年。
更多信息:
Adobe Forums Post
我正在尝试与 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...");
}
它记录 "Performing merge..." 所以我的文件路径实际上指向存在的文件。更重要的是,它充满了崩溃,并且不报告任何错误。
编辑 2:
需要注意的是,这是启动sampleclient的终端window从IDS得到的错误:Error -1 fault: SOAP-ENV:Client [no subcode]
"End of file or no input: Operation interrupted or timed out"
Detail: [no detail]
已找到解决方案,如果其他人发现自己处于我的情况。 为什么 mergeRecords() 在服务器中似乎损坏仍然是个谜。
doc.dataMergeProperties.exportFile()
Colecandoo 的支持: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]", );
仍然需要一些调整,但它正在执行合并 - 这正是我需要的。
Adobe 的人员注意到了这一问题,并在 2019 版 InDesign Server 中解决了这个问题。具有相似合并文档的相同脚本不再产生错误。
所以,为了解决问题,请更新到 2019 年。
更多信息: Adobe Forums Post