2017-08-22 47 views
0

我正在使用这个脚本(下面)从几个不同的文件批量导出pdf:s,我每周都会执行一个任务。文件名总是相同的,我使用8-10个不同的indd文件来创建12-15个不同的pdf:s。寻找一种更快捷的方式批量导出pdf:s in InDesign

脚本设置这样的:

//Sets variables for print and web presets 
var myPDFExportPreset = app.pdfExportPresets.item("my-present-for-print-pdf"); 
var myPDFExportPreset2 = app.pdfExportPresets.item("my-preset-for-web-pdf"); 

//sample of one pdf exported first with print, then web pdf preset as two different files 

var firstFileIntoPdfs = function(){ 

var openDocument= app.open(File("MYFILEPATH/firstfile.indd")); 

    openDocument.exportFile(
     ExportFormat.pdfType, 
     File("MYFILEPATH/print-pdfs/firstfile-print.pdf"), 
     false, 
     myPDFExportPreset 
    ); 

    openDocument.exportFile(
     ExportFormat.pdfType, 
     File("MYFILEPATH/web-pdfs/firstfile-web.pdf"), 
     false, 
     myPDFExportPreset2 
    ); 
}; 

我定义就像一个全部出口上面命名的功能,有的只使用其中一个预设,有两种类似上面。我打电话给所有这些功能在文件

firstFileIntoPdfs(); 
secondFileIntoPdfs(); 
thirdFileIntoPdfs(); 
fourthFileIntoPdfs(); 

等结束...¨

剧本然而相当缓慢,10个文件到每1个或2个PDF文件,的功能等以上,可能需要10分钟。我不认为这是一个CPU问题,我注意到,似乎脚本正在等待“firstFileIntoPdfs()”中的文件被创建,这是一个需要几分钟的过程,然后才能执行下一个函数。然后再等待...

选择文件 - >手动导出可以设置新的文件导出,而以前的文件仍在处理PDF文件,这对我来说似乎比这个脚本的工作方式更快。然而,手动点击当然是容易出错且乏味的。

有没有更好的方式来编写这个批处理导出脚本比我上面做了什么,这将使所有的功能执行,而前一个功能的PDF仍然在系统中处理?我想保留它们作为单独的函数,以便能够在只需要某些特定的pdf时注释掉一些:s。 (除非全部出口的过程几乎与出口1只pdf一样快)。

我希望我的问题有道理!

+0

阅读标签说明! 'BATCH-FILE' **不会**意味着处理/导出多个文件! – SteveFest

+0

哎呀,谢谢你删除它。 – Julius

回答

2

有一个非同步的方法提供,asynchrousExportFile取代导出文件:

var openDocument= app.open(File("MYFILEPATH/firstfile.indd")); 
openDocument.asynchronousExportFile(
    ExportFormat.pdfType, 
    File("MYFILEPATH/print-pdfs/firstfile-print.pdf"), 
    false, 
    myPDFExportPreset 
); 

它使用一个后台任务

+0

哦,我不知道!这正是我所期待的,谢谢! – Julius