在解释我需要做什么之前,我认为解释一下我将要处理的文档会很有帮助:
通过 InDesign,使用数据合并功能,我将创建一个文档,其中每个跨页都将成为产品规格表的正面和背面(信纸大小,双面)。
我希望脚本可以做的是将每个跨页导出为其自己的 PDF,并根据每个跨页上显示的产品型号命名 PDF。
例如,假设数据合并有 25 条记录。从第 2 页开始,这将是 25 个跨页(50 页)。导出将创建第 2-3 页的 PDF、第 4-5 页、第 6-7 页的 PDF,依此类推。导出过程还会提取始终位于左侧页面表格中的型号,并使用型号来命名它正在创建的 PDF。
当它只在我脑海中时,它似乎更可行。现在我已经把它打出来了,我并不那么乐观。但我也是一个编写脚本的傻瓜,所以希望任何熟练的人都可以参与讨论这个想法的可行性。
谢谢!
*编辑说我使用 25 条记录只是作为示例。该项目将涉及数百个规格表,因此我对数据合并和自动化感兴趣。
到目前为止,我只是在验证我是否可以使用 InDesign 的数据合并来创建跨页,而不仅仅是单个页面。
我确实查看了一个脚本,我在这里获得了帮助,虽然这是一个非常不同的过程,但它确实包括一个根据标题单元格中的文本查找单元格内容的步骤。这就是让我认为可以提取型号并用它来命名每个文件的原因。
这里有一个最简单的解决方案:
if (app.selection.length == 0) {
alert('Select a text frame with a list of names');
exit();
}
var frame = app.selection[0];
if (!(frame instanceof TextFrame || frame instanceof InsertionPoint)) {
alert('Select a text frame with a list of names');
exit();
}
if (frame instanceof InsertionPoint) frame = frame.parent.textContainers[0];
var doc = app.activeDocument;
var names = frame.contents.split('\r');
var pdf_preset = app.pdfExportPresets[0]; // High Quality Print
var start_page = 2;
for (var i=0; i<names.length; i++) {
var pdf_name = doc.filePath + '/' + names[i] + '.pdf'
var page = start_page + i*2;
var pdf_file = File(pdf_name)
app.pdfExportPreferences.pageRange = page + '-' + (page+1);
doc.exportFile(ExportFormat.pdfType, pdf_file, false, pdf_preset);
}
脚本从选定的框架中获取姓名列表(您可以从 csv/xlsx 日期文件中手动复制/粘贴),并将跨页导出到包含列表中姓名的 PDF 中。
结果:
如果您需要更改 PDF 导出配置文件或其他内容,请告诉我。