1

我有一个非常简单的 ExtendScript 脚本,它从当前活动文档的子集创建一个新文档:

var sourceDocument = app.activeDocument;
var i, j;

for(i = 0; i < sourceDocument.layers.length; i++) {
  sourceDocument.layers.item(i).locked = false;
}
for(i = 0; i < sourceDocument.spreads.length; i++) {
  for(j = 0; j < sourceDocument.spreads.item(i).textFrames.length; j++) {
    if(sourceDocument.spreads.item(i).textFrames.item(j).locked) {
      sourceDocument.spreads.item(i).textFrames.item(j).locked = false;
    }
  }
}

var destDocument = app.documents.add();
var firstPageIndex = 0; // In the actual script, this is chosen by the user.
var lastPageIndex = 5; // In the actual script, this is chosen by the user.

destDocument.importStyles(ImportFormat.paragraphStylesFormat, new File(sourceDocument.filePath + "/" + sourceDocument.name), GlobalClashResolutionStrategy.LOAD_ALL_WITH_OVERWRITE);
destDocument.importStyles(ImportFormat.characterStylesFormat, new File(sourceDocument.filePath + "/" + sourceDocument.name), GlobalClashResolutionStrategy.LOAD_ALL_WITH_OVERWRITE);
destDocument.viewPreferences.horizontalMeasurementUnits = sourceDocument.viewPreferences.horizontalMeasurementUnits;
destDocument.viewPreferences.verticalMeasurementUnits = sourceDocument.viewPreferences.verticalMeasurementUnits;
destDocument.documentPreferences.facingPages = sourceDocument.documentPreferences.facingPages;
destDocument.documentPreferences.pageHeight = sourceDocument.documentPreferences.pageHeight;
destDocument.documentPreferences.pageWidth = sourceDocument.documentPreferences.pageWidth;
destDocument.documentPreferences.pageSize = sourceDocument.documentPreferences.pageSize;
destDocument.documentPreferences.allowPageShuffle = true;

var range = sourceDocument.pages.itemByRange(firstPageIndex, lastPageIndex);
range.duplicate(LocationOptions.AFTER, destDocument.pages[destDocument.pages.length - 1]);
destDocument.pages[0].remove(); // An empty spread containing an empty page is added when the new document is created and we cannot remove it before other pages are inserted (Documents must have at least one page)

该脚本适用于许多文档。但是当我对一个特定的文档(我们称之为 foo.indd)执行它时,InDesign 在执行复制时变得无响应:range.duplicate(LocationOptions.AFTER, destDocument.pages[destDocument.pages.length - 1]);. 从那时起,我唯一能做的就是强制 InDesign 退出。

这是一个 InDesign 错误吗?我怎样才能找到这个特定文档的哪一部分造成了问题?

4

2 回答 2

0

试试这个脚本到你的有问题的文件上。如果失败,请查看它应该在桌面上生成的报告。

http://www.loicaigon.com/downloads/cloneDocument.jsx

Loic http://www.loicaigon.com

于 2012-06-19T17:23:49.507 回答
0

我真的不能说你的例子有什么问题,但如果 indesign 挂起,那可能是由循环引起的(到无穷大和超越:))

因此,您可以尝试通过输出循环限制来避免问题,以避免 InDesign 重新计算

var limit = …
for ( i = 0; i<limit ; i++)…

此外,您可以尝试在控制台上写入信息,以获取 InDesign 实际被卡住的位置的信息。因此,在报告文件中即时写入信息,您最终可能会确定问题区域。

此外,您可以尝试询问每个关键项目以查看文件是否有问题。

最后但并非最不重要的一点是,尝试手动导出到该文件的 idml,重新打开并再次运行该脚本。有时文件变得笨重,并且通过 idml 修复其中的大部分。

于 2012-06-06T18:32:58.990 回答