InDesign 脚本,可以将文档的每个跨页导出为 2 页 PDF,并根据特定的表格单元命名 PDF

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

在解释我需要做什么之前,我认为解释一下我将要处理的文档会很有帮助:

通过 InDesign,使用数据合并功能,我将创建一个文档,其中每个跨页都将成为产品规格表的正面和背面(信纸大小,双面)。

我希望脚本可以做的是将每个跨页导出为其自己的 PDF,并根据每个跨页上显示的产品型号命名 PDF。

例如,假设数据合并有 25 条记录。从第 2 页开始,这将是 25 个跨页(50 页)。导出将创建第 2-3 页的 PDF、第 4-5 页、第 6-7 页的 PDF,依此类推。导出过程还会提取始终位于左侧页面表格中的型号,并使用型号来命名它正在创建的 PDF。

当它只在我脑海中时,它似乎更可行。现在我已经把它打出来了,我并不那么乐观。但我也是一个编写脚本的傻瓜,所以希望任何熟练的人都可以参与讨论这个想法的可行性。

谢谢!

*编辑说我使用 25 条记录只是作为示例。该项目将涉及数百个规格表,因此我对数据合并和自动化感兴趣。

到目前为止,我只是在验证我是否可以使用 InDesign 的数据合并来创建跨页,而不仅仅是单个页面。

我确实查看了一个脚本,我在这里获得了帮助,虽然这是一个非常不同的过程,但它确实包括一个根据标题单元格中的文本查找单元格内容的步骤。这就是让我认为可以提取型号并用它来命名每个文件的原因。

adobe-indesign export-to-pdf
1个回答
0
投票

这里有一个最简单的解决方案:

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 中。

InDesign layout with several pages and one text frame with a list of the names

结果:

Folder with icons of several saved PDF files and one InDesign file

One of the PDF files opened in Adobe Acrobat

如果您需要更改 PDF 导出配置文件或其他内容,请告诉我。

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