2010-05-27 48 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