2010-05-27 68 views
0

对于需要自动创建名片的项目。现在,他们为每个名片模板都有一个InDesign文件。他们在indesign文件中插入相关人员的信息,然后生成它的pdf。在运行时从inDesign创建pdf

现在,在Web应用程序中输入客户信息是没有问题的,但是如何生成pdf以及如何在运行时更改indesign文件?

我认为改变indesign文件将不可能以编程方式?

我可以使用一张卡模板在其中生成一个pdf的indesign。在运行时,我会将该卡复制到pdf中x次。那么我需要注入人员的信息(姓名,地址,...)?

这里有什么可能?

最终的PDF用于通过自动创建名片,剪了一台机器,...

回答

4

可以使用自动相当多的东西内置在InDesign脚本支持。在InDesign GUI中,您可以将脚本标签分配给InDesign文档中的各种元素,例如文本框架。如果,例如,想更换文本框一些文字,您可以申请这样的事情在Javascript(CS4及以下,见下面的说明):

var document = app.open(File("path to your InDesign file"), false); 
var textFrame = document.pageItems.item("your script label"); 
var story = textFrame.parentStory; 
story.contents = "your new content" 

要创建一个PDF你做这样的事:

var pdfFile = new File("path to your pdf"); 
document.exportFile(ExportFormat.PDF_TYPE, pdfFile); 

这只是你可以做的几个例子,我希望这有些帮助。 如果您不知道如何在InDesign中安装和运行脚本,则可以使用this blog post说明该过程。你可以找到一个很好的在线脚本参考here。 据我了解,你想运行你的脚本作为批处理。如果是这种情况,我建议您查看InDesign Server。它基本上是InDesign的桌面版本,但没有GUI和简单的Web Service界面。它也作为Windows服务运行(或其他平台上的等效项)。

注意:从CS5开始,您不能再通过其脚本标签来标识文本框架,如上所示。 There's some discussion about it here。最好的选择是使用itemByName(name)而不是item,name是图层面板上的名称。这可以通过在图层调色板中的项目上执行really slow double click在GUI中进行更改。或者,this workaround将每个文本框架的名称设置为等于其脚本标签。然后,您只需更改文本框的内容即可:

document.textFrames.itemByName("shmullus").contents = "The Doctor"; 
+0

是否还可以在C#中打开InDesign文件?或者InDesign文件基本上是xml? – 2010-05-28 16:03:31

+1

至少在InDesign CS3中,它是一种专有的二进制格式。不知道CS4或CS5是否使用xml格式,但我怀疑这一点。理论上你可以修改C#中没有InDesign的文件,但是你必须对文件格式进行逆向工程。 更好的选择是使用提供的Web服务API将Javascript脚本从C#应用程序发送到InDesign Server。 – 2010-05-28 19:07:06

+1

CS4和CS5也使用二进制格式。可以将InDesign文件保存为XML格式的.idml文件,但即使您可以更改该文件,也无法轻松将这些文件转换为PDF,而无需使用InDesign。 – MatsT 2010-06-09 12:51:24