这是一个InDesign脚本,用于将indd文件转换为jpgs,然后将其导出并重命名为桌面上的文件夹。这一切都很好,但有一部分是我试图做的,只是导出那些没有母版和广告的网页"应用。我已经编写了一个if语句,用于检查哪个母版页已应用于当前文档的当前页面,如果它没有" H-Advertising"那么表面上应该只导出该页面。应用为母版页。我知道如果我添加一个不同的条件(例如if(3!= 4))并且它也能够提醒每个页面的母版页,循环可以工作,但它似乎只是继续并将页面添加到无论如何我要导出的页面数组。
Main();
function Main() {
// Check to see whether any InDesign documents are open.
// If no documents are open, display an error message.
if (app.documents.length > 0) {
app.jpegExportPreferences.exportingSpread = false;
//makes sure there is a book open
if (app.books.length != 1)
alert("This only works when you have one (1) book open and the first file in that book open");
else
//loop through the book's stories
for (b = 0; b < app.books[0].bookContents.length; b++) {
// initialize pages variable
var pages = [];
// loop through the pages in the active document
for (i = 0; i < app.activeDocument.pages.length; i++) {
// initialize variable holding document name, and then rename as follows
var myDocumentName = app.books[0].bookContents[b].fullName;
c = app.open(app.books[0].bookContents[b].fullName);
myDocumentName = myDocumentName.name.replace("indd", "jpg");
myDocumentName = myDocumentName.replace("WN16", "WN16_");
// get value of the current page's applied master
if (app.activeDocument.pages[i].appliedMaster != null) {
var appliedMaster = app.activeDocument.pages[i].appliedMaster.name;
}
// if it's not an advertising page, get the page number and add it to an array containing page numbers to export
if (appliedMaster !== "H-ADVERTISING" && appliedMaster!= "[None]" && appliedMaster!= null) {
alert(appliedMaster);
pages.push(app.activeDocument.pages[i].name);
printpages = pages.join(",");
// set the pageString of pages to export as jpegs
app.jpegExportPreferences.pageString = printpages;
// export all the pages using the export page range page string
c.exportFile(ExportFormat.JPG, File(Folder.desktop + "/EDIT_Jpgs/" + myDocumentName));
}
}
};
答案 0 :(得分:0)
注意:Property&#39; pageString&#34;当JPEG导出范围不是全部时有效。所以 - 只是为了确定 - 您可能需要将 app.jpegExportPreferences.jpegExportRange 设置为&#39; ExportRangeOrAllPages.EXPORT_RANGE&#39;
注意2:考虑可以在没有打开文档的情况下打开一本书,或者activeDocument可以来自app.books [0] ==&gt;之外。在这种情况下,您的循环 for(i = 0; i&lt; app.activeDocument.pages.length; i ++)可能导致错误的值,导致目标doc被打开...在此循环内。< / p>
亚雷克
答案 1 :(得分:0)
好的,在我更新到InDesign 2017之后,脚本现在正在运行。所以,除了InDesign中一定存在错误之外,不是真正的答案。我在代码中唯一调整的就是添加这个
if (app.activeDocument.pages[i].appliedMaster !== null && app.activeDocument.pages[i].appliedMaster!== "H-ADVERTISING" && app.activeDocument.pages[i].appliedMaster!==null) {
appliedMaster = app.activeDocument.pages[i].appliedMaster.name;
}
在检查母版页实际值的代码中,而不是检查分配了母版页值的变量。这似乎是检查过滤任何没有应用母版页的页面的技巧(null或“[None]”)