如何根据导出为 epub 还是 pdf 自动更改文本变量的值?

问题描述 投票:0回答:2

我正在使用 InDesign 设计书籍布局。这本书将以平装本和电子书读者的形式出版。

这两种格式(平装书和电子书)将具有不同的 ISBN。因此,我想在 InDesign 中定义一个

ISBN
文本变量;然后,当我导出它时,文本变量将根据我导出的是
.epub
文件还是
.pdf
文件而改变。

有没有办法在 InDesign 中做到这一点?目前我唯一能弄清楚如何做的方法是在文本中包含both ISBN,使用字符样式将电子书 ISBN 呈现为透明(从而使其不可见),然后使用 CSS 呈现它将平装本 ISBN 导出为

.epub
文件时可见并隐藏平装本 ISBN。

但我不得不认为有更好的方法来做到这一点?

谢谢!

adobe-indesign epub
2个回答
1
投票

这里是一个最简单的解决方案的例子。假设你有 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;


0
投票

这是另一种方法。假设您的布局以电子书 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

© www.soinside.com 2019 - 2024. All rights reserved.