当我尝试使用ExtendScript复制页面时,Adobe InDesign会无限期挂起

时间:2012-06-06 15:45:08

标签: extendscript adobe-indesign

我有一个非常简单的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错误吗?如何找到此特定文档的哪个部分正在创建问题?

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

答案 1 :(得分:0)

尝试将此脚本放到您的probleamtic文件上。如果失败,请查看它应该在桌面上生成的报告。

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

卢瓦克 http://www.loicaigon.com