2016-08-29 110 views
-2

我需要在InDesign中自動創建PDF,方法是觀察XML文件的更改,下載XML中引用的所有遠程圖像(因爲InDesign無法與遠程圖像),將XML轉換爲引用下載的本地圖像路徑,加載InDesign模板,然後執行XML合併並將結果導出爲PDF。通過FTP自動下載目錄

我目前正在偵聽對XML文件所做的更改並使用PowerShell啓動InDesign,但是我一直在如何獲取所需的圖像。

我想,不是試圖讀取XML並拉下引用的圖像,我可以下載整個圖像目錄。我已經考慮通過PowerShell使用類,但使用批處理和.NET腳本不是我的強項,我只能找到下載單個文件或基於CSV的文件列表的示例表現。

我是一名JS開發人員,所以我研究了一個使用像gulp和ftp模塊這樣的任務運行的Node.js實現,但我不確定這是一個好的解決方案,還是甚至可以做我想做的事。

如果您必須在Windows計算機上執行此操作,那麼您的工作流程是什麼?

+0

使用'wget'或'curl'不夠嗎?有一個這樣的任務的標準解決方案。還有內置的ftp工具可以用來下載所有的遠程文件。 – wOxxOm

+0

我能夠通過HTTP服務圖像,而不是使用FTP,這使事情變得更容易一些。我的解決方案是一個完整的node.js實現。 – SchattenJager

回答

0

我的解決辦法是使用Node.js和受吞掉(使用一飲而盡手錶)來創建監聽到一個目錄編譯環境和揭開序幕檢測到XML文件時的變化構建:

gulp.task('watchXml', function() { 
    watch('input/*.xml', batch(function (events, done) { 
     gulp.start('build', done); 
    })); 
}); 

我使用npm 請求模塊通過HTTP(而不是FTP)下載圖像,並使用模塊將它們流式傳輸到本地文件系統。在下載和XSLT完成後,我可以運行shell命令使用child_process推出的InDesign:

var exec = require('child_process').exec; 

gulp.task('shell', function(done) { 
    exec('start "" "C:\\Program Files\\Adobe\\Adobe InDesign CC 2015\\InDesign.exe"', function(err, stdout, stderr) { 
     if (err) { 
      done(); 
      return console.log('error:', err); 
     } 
     console.log('InDesign launched.'); 
     done(); 
    }); 
}); 

從那裏,InDesign的啓動腳本接管,導入XML,並創建PDF。

+0

請注意,您的解決方案可能會違反InDesign EULA,因爲人員(或更糟糕的系統)存放xmls因此運行自動化可能不是InDesign Client許可證所有者。在這樣的「服務器」環境中,您需要一個InDesign Server許可證。如果許可所有者存儲xml文件並運行您的系統,則此係統將是合法的。 – Loic

+0

@Loic,我感謝你給我留下了可能的法律問題,但你們的例子並不清楚。我從第三方系統(SAP)生成XML,並將文件放置在運行InDesign和node.js應用程序的Windows VM上的共享目錄中。這是否違反了EULA?你能否提供有問題的條款,以便我可以查看該語言? – SchattenJager

+0

請參閱/Legal/en_GB/license.html中的第2.1.7.1和2.1.7.2小節:http://img15.hostingpics.net/pics/818141Capturedecran20160916a111053.png – Loic