这个对于Javascript/Extendscript向导来说应该足够简单。我想要使用打印预设打印文档,同时还指定页面范围(在选择预设之后,可能还需要其他选项)。参考InDesign CS6 JavaScript脚本指南,它有这个精彩的,详细的解释如何做到这一点:
使用打印机预设打印
要使用打印机预设打印文档,请在print命令中包含打印机预设。
哇。很有描述性,很有帮助。有人能帮我解释一下吗?
编辑(01/21/2019)
我被问到我如何能够告诉脚本我想要打印的页面。事实证明,这并没有存储在PrinterPreset
.
Document
有一个叫做printPreferences
的属性,它允许访问PrintPreference
对象。该对象允许开发人员通过指定PageRange
enum或带有页面范围的String(其中"1"为第一页)来设置pageRange
。
那么,为了说明:
var document = app.activeDocument; // Presumes the document you want to print is already open.
document.printPreferences.pageRange = PageRange.ALL_PAGES; // Will print all pages in the document.
document.printPreferences.pageRange = "1-3,7,10,12-15" // Prints pages 1, 2, 3, 7, 10, 12, 13, 14, and 15.
注意:
PageRange.SELECTED_ITEMS
似乎只用于导出项,而不是打印(因为PageRange
枚举用于两者)操作)。但是,我还没有对此进行测试。
在调用document.print()
之前可以设置许多其他PrintPreference
属性,因此值得查找它们。
app.print()
方法可以将PrinterPreset
对象作为其参数之一。这里是该方法的参考链接,可以获得更多信息。
下面是一个示例(未测试):
var doc = app.activeDocument;
var file = File(doc.fullName); // Get the active document's file object
var preset = app.printerPresets[0]; // Use your printer preset object
app.print(file, null, preset);
InDesign参考资料列出的app.print()
方法或多或少是这样的:
void print (from: varies[, printDialog: bool][, using: varies])
Prints the specified file(s).
Parameter Type Description
from Array of Files One or more file paths. Can accept: File or Array of Files.
File
printDialog bool Whether to invoke the print dialog (Optional)
using PrinterPreset Printer preset to use. Can accept: PrinterPresetTypes enumerator or PrinterPreset. (Optional)
PrinterPresetTypes
列出的第一个信息是方法的返回值void
,在本例中,这意味着它不返回任何东西。
下面列出的信息是方法print
的名称,然后是它的命名参数:from
、printDialog
和using
,以及每个参数的类型。
参数也列在图表中以作进一步说明。例如,from
参数期望一个类型为File
的对象。因此,在上面的例子中,我通过调用var file = File(doc.fullName);
的构造函数来创建File
对象的"实例"。然后我得到一个已经存在的PrinterPreset
对象:var preset = app.printerPresets[0];
。最后,我将每个对象传递给为中间变量插入null
的函数(因为它是可选的,我决定忽略它):app.print(file, null, preset);
.