我想知道as3正在做什么在bakground做任何事情。我的确切问题是我正在尝试使用indesign sdk打包文档,就在我导入xml之前,问题是文件在打包时无法保存,我很确定这是因为导入尚未准备好。这是代码:
IDScriptingEventAdapter.getInstance().addEventListener(Document.AFTER_IMPORT, afterImport);
document.xmlElements.item(0).xmlElements.item("test").importXML(File.applicationStorageDirectory.resolvePath("temp/styles.xml"));
public function afterImport(event:ImportExportEvent):void {
var docPackaged:Boolean=app.activeDocument.packageForPrint(packagePath, true, true, true, true, true, true, true);
}
正如您可以看到使用Document.AFTER_IMPORT
侦听器调用该函数但由于某种原因它很快就会被触发。
经过一些测试后,我注意到导入已经完成,但是当处理程序执行时,xmlElements还没有到位。 因此,文档在打包时尚未就绪,因此无法保存文档。
我得到的正确错误是:
Cannot save a copy of “CataloogCS5.indd”.\n
那么是否有一种方法可以看出AS是否不再执行任何操作(添加了所有xmlElements)或其他解决方案?
答案 0 :(得分:0)
也许您可以尝试使用while循环检查工作流中最后一个xmlElement的有效性,或者尝试保存文档而不能,然后一旦可以进行打包,就可以了?
您可以添加计时器以在打包过程中添加暂停。
或
while(!doc.xmlElements [0] .xmlElements [-1] .isValid){// wait}
或
function checkIfPackageable() { 尝试 { doc.save(); 返回; } 赶上(E) { checkIfPackageable(); } }
可能是更好的选择。
希望它有所帮助,
卢瓦克