我正在使用 InDesign 设计书籍布局。这本书将以平装本和电子书读者的形式出版。
这两种格式(平装书和电子书)将具有不同的 ISBN。因此,我想在 InDesign 中定义一个
ISBN
文本变量;然后,当我导出它时,文本变量将根据我导出的是 .epub
文件还是 .pdf
文件而改变。
有没有办法在 InDesign 中做到这一点?目前我唯一能弄清楚如何做的方法是在文本中包含both ISBN,使用字符样式将电子书 ISBN 呈现为透明(从而使其不可见),然后使用 CSS 呈现它将平装本 ISBN 导出为
.epub
文件时可见并隐藏平装本 ISBN。
但我不得不认为有更好的方法来做到这一点?
谢谢!
这里是一个最简单的解决方案的例子。假设你有 3 个变量:
isbn
(用于布局)paper isbn
ebook isbn
此脚本显示对话框窗口,用于将
paper isbn
或 epub isbn
的内容分配给变量 isbn
(布局中使用的当前 isbn):
var doc = app.activeDocument;
var paper_isbn = doc.textVariables.itemByName('isbn paper');
var ebook_isbn = doc.textVariables.itemByName('isbn ebook');
var isbn = doc.textVariables.itemByName('isbn');
var current_isbn = isbn.variableOptions.contents;
var win = new Window('dialog','Select ISBN');
var paper_checkbox = win.add('radiobutton');
paper_checkbox.text = 'Paper: ' + paper_isbn.variableOptions.contents;
paper_checkbox.value = paper_isbn.variableOptions.contents == current_isbn;
paper_checkbox.onClick = function() { current_isbn = paper_isbn.variableOptions.contents }
var ebook_checkbox = win.add('radiobutton');
ebook_checkbox.text = 'eBook: ' + ebook_isbn.variableOptions.contents;
ebook_checkbox.value = ebook_isbn.variableOptions.contents == current_isbn;
ebook_checkbox.onClick = function() { current_isbn = ebook_isbn.variableOptions.contents }
var buttons = win.add("group");
buttons.orientation = "row";
var ok = buttons.add("button",undefined,"OK");
var cancel = buttons.add("button",undefined,"Cancel");
win.defaultElement = ok;
win.cancelElement = cancel;
if (win.show()) isbn.variableOptions.contents = current_isbn;
这是另一种方法。假设您的布局以电子书 ISBN 作为主要 ISBN,并像往常一样制作 epub。你有两个变量:
isbn epub
(布局中使用的主要 ISBN)isbn paper
这是将 epub isbn 更改为纸质 isbn 并使用预设“高质量打印”以 PDF 格式导出文档,然后将 isbn 更改回 epub isbn 的脚本:
var doc = app.activeDocument;
var isbn = doc.textVariables.itemByName('isbn epub');
var epub_isbn = isbn.variableOptions.contents;
var paper_isbn = doc.textVariables.itemByName('isbn paper').variableOptions.contents;
isbn.variableOptions.contents = paper_isbn; // change to paper isbn
var pdf_file = File(doc.filePath + '/' + doc.name.split('.').shift() + '.pdf');
var preset = app.pdfExportPresets.itemByName("[High Quality Print]");
doc.exportFile(ExportFormat.pdfType, pdf_file, false, preset);
isbn.variableOptions.contents = epub_isbn; // change back to epub isbn
导出的 PDF 如下所示(注意不同的 ISBN):
也许您可以添加几行来导出 EPUB。像这样的东西:
var epub_file = File(doc.filePath + '/' + doc.name.split('.').shift() + '.epub');
doc.exportFile(ExportFormat.EPUB, epub_file, true);
但是有很多首选项并且没有预设(至少在我的 CS6 InDesign 中是这样)所以由您决定应该自动化到什么程度。
以下是如何在 EPUB 中设置封面图片的示例:
var epub_file = File(doc.filePath + '/' + doc.name.split('.').shift() + '.epub');
doc.epubExportPreferences.coverImageFile = 'd:\\temp\\cover.jpg';
doc.epubExportPreferences.epubCover = EpubCover.EXTERNAL_IMAGE;
doc.exportFile(ExportFormat.EPUB, epub_file, false); // 'false' means no dialog window
完整的属性列表在这里:
https://www.indesignjs.de/extendscriptAPI/indesign-latest/#EPubExportPreference.html