编辑较短的版本:
我正试图在InDesign中关闭一本打开的书并在之后运行一些功能。看起来下一步是在书完全关闭之前开始的
myBook.close();
alert("Book closed");
我的警报显示仍然在背景上打开的书。如果我对书中的文件进行任何操作,它会崩溃InDesign。原帖子中的更多细节。
===============================
很抱歉很长的帖子。
我正在InDesign中制作一本书。 MAC OSX 10.9.5 Indesign CS5.5 首先,我创建并填充大约30章,在开头添加TOC章节,在结尾添加另一章,创建一本书,将所有章节添加到书中,关闭并保存书籍。之后,我试图打开最后一个TOC章节来插入TOC。文件打开后Indesign崩溃。
没有文件打开语句一切正常。
代码示例:
创建本书后:
// myBook is referenced through the app.open(myBookFile);
// with myBookFile is a string - path to the file
// also tried to re-reference book after open file by using app.books[0]
myBook.updateAllNumbers(); // tried to disable, did not help
//$.sleep(5000); //tried this, did not help
app.activeBook.close();
// also tried myBook.close(); no change
// tried myBook.close(SaveOptions.YES); no change
//$.sleep(5000); //tried this, did not help
//$.sleep(5000);
// add toc to the last chapter
alert("Before TOC Insert");
indexAddTOC();
alert("Build is complete");
当第一个警报出现时,我可以看到该书仍处于打开状态。同时使用EST调试器也会在第一个警报之前关闭本书(并且不会使InDesign崩溃)。
我可以看到最后一条消息,并且在此InDesign崩溃之后。重新打开后,它会打开书中的每一章。
function indexAddTOC(){
// re-open index file
var myFolder = new Folder("~/Desktop/" + publicationName.replace(/ /g, "_").replace(/:/g, ""));
var myFileName = "000".substr( 1,3 - selectionNumber.toString().length) + selectionNumber + "_Index.indd";
var myFile = File(myFolder.fsName + "/" + myFileName);
app.open(myFile); // disabling this eradicates the error
}
错误消息:
错误报告转储包含:
Thread 16:
0 libsystem_kernel.dylib 0x98b4e046 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x947d4dcf _pthread_wqthread + 372
2 libsystem_pthread.dylib 0x947d8cce start_wqthread + 30
Thread 0 crashed with X86 Thread State (32-bit):
eax: 0x00000040 ebx: 0x00000040 ecx: 0x00000040 edx: 0x00000000
edi: 0xbfffac54 esi: 0x00000040 ebp: 0xbfffab88 esp: 0xbfffab70
ss: 0x00000023 efl: 0x00010282 eip: 0x947d6bd5 cs: 0x0000001b
ds: 0x00000023 es: 0x00000023 fs: 0x00000000 gs: 0x0000000f
cr2: 0x00000040
Logical CPU: 0
Error Code: 0x00000004
Trap Number: 14
感觉书中的问题没有正确结束。任何人之前都有类似的问题,并且知道如何解决这个问题?
答案 0 :(得分:0)
也许像
while(app.books.itemByName(myBookFile).isValid){}
代替你的睡眠?我现在无法测试,但这只是一个想法。