我不知道別人的狀況如何,但是 Windows 實在給我太多讓人抓狂的挫折感。
狀況大概是這樣:去年我寫過一篇〈InDesign 的 Scriping〉,裡頭提到,Adobe InDesign 從 2.0 版開始,提供了 XML 匯入與匯出功能,因此,您可以在 InDesign 裡頭先根據 XML 欄位畫好版面、定義好樣式(styles),然後只要匯入 XML 檔案,就可以快速完成刊物的排版。那麼,XML 應該從哪裡產生好呢?我以為從 web-based 的內容管理系統產生,算是個比較方便的主意—畢竟現在這類的稿件管理系統這麼多,而且在多人共同編輯上,也算是方便。
同時,InDesign 是一套 scriptable 的排版軟體,從 InDesign CS 版開始,排版軟體本身就內建一套用於自動執行許多工作的 Javascript 語言,在 Mac OS X,也可以使用 Apple Script,在 Windows 作業系統上,也可以使用 VBScript 語言寫一些東西。之前我就在 Mac OS X 上,以 Apple Script 做了一些小東西,例如可以按一個按鈕,就在版面上插入今天日期…等;另外,就是透過按幾個按鈕,就可以自動將遠端的 XML 匯入到 InDesign 文件,script 裡頭做的事情包括:
- 跳出視窗,詢問要抓取網站上的哪一個 XML 檔案。
- 下載 XML 檔案到本機磁碟指定的位置上。
- 呼叫 InDesign 排版軟體,匯入這個 XML 檔案。
- 視是否正確匯入,跳出相關訊息。例如,如果發生 XML Parser Error,就跳出瀏覽器開啟遠端XML 檔案,查看 Parser 訊息。
- 將用完的 XML 檔案丟到垃圾桶去。
而這兩天就在嘗試,有沒有辦法把之前寫的這些東西,也可以在 Windows 上跑。
Adobe 內建的 Javascript 並不提供從網站下載檔案的 function,所提供的 File
物件也只可以處理本機檔案,想了想,改用 VBScript 寫,很快的把匯入 XML 的部份寫了出來,然後要處理的就是下載遠端 XML 的這段。在 Mac OS X 上,只要呼叫一下 URL Access Scripting
就搞定了,至於 VBScript ,去 google 了一下,似乎都是用到了 Adodb.Stream 物件,於是就快樂地抄了網站上的範例 code,存檔存成 .vbs 檔案,用滑鼠點兩下執行看看、試著 debug,不點還好,一點下去—耶,檔案不見了。
還好編輯器視窗還沒有關掉,另外存檔,再點選看看,檔案又不見了。屢試不爽。
搞了一下午才找到為什麼一點下去、檔案就會不見的原因。感謝卡巴斯基,只要一在 VBScript 檔案 Adodb.Stream 物件,馬上被當成病毒刪除。不僅卡巴斯基,查了查網路,上個月底微軟網站上也有一篇 McAfee is killer! 🙂,提到 McAfee 同樣如此。
問的人問說:「I wish to use McAfee and I wish to use VBScripts. What to do? 」回答竟然是:「If you practice basic safe computing and don’t use MS email clients, then you probably don’t need to run McAfee all the time. 」真是好樣的。另外一篇中,提供了一個不用 Adodb.Stream 物件的方法,就是,去網站上下載 Windows 版本的 wget ,然後用 VBScript 呼叫 shell command 的方式呼叫 wget,不過,既然 Adodb.Stream 物件被當成了病毒,那麼,改天會不會有病毒也包了一個 wget,恐怕也難說…。
難得想要寫點東西,沒寫幾行就被當成病毒,是了,我放棄。既然這年頭病毒多,防毒軟體殺無赦還是防不了病毒的狀況也多,而疑神疑鬼的傢伙,更多。是了,我放棄。
順道更正一下去年的說法。之前我說「只要在 XML 文件中加入正確的文字編碼資訊,(例如 ),就可以正確處理各種編碼。」不過,僅侷限於 Mac OS 版本的 InDesign 2.0,InDesign 2.0 的 Windows 版本就只能夠處理 UTF-8 編碼的 XML,而從 InDesign CS 版之後,無論 Windows 或是 Mac OS 版本,都只能夠處理 UTF-8 編碼的 XML。
看到這篇的第一句,讓我想到昨天的一個經驗
雖說跟這篇沒什麼關係,但也是 Windows 令我抓狂…
話說,當我手賤,把輸入法設定裡的快速鍵改成「無」的時候
卻發現沒有回復預設值的選項,改不回預設值了啊 @口@!
而且,就算我想手動改回預設值也不行…
因為只能選 Alt + Shift + 某個鍵 或 Ctrl + Shift + 某個鍵
根本選不出預設值的 Ctrl + Alt + 某個鍵 啊 Q口Q!
而且,即使要選其它快速鍵,他也一律跟你說有其他項目用過了
可是根本舊沒有啊 Q口Q!
最後我只好改登錄值把它改回去了=.=
怪了點,怎麼會用adodb做這件事情?
MSXML應該有辦法做到吧?得花點時間研究看看…..
剛剛查了一下,應該用WinHTTP就可以把一個網站上的檔案取下來。MSXML的XmlHTTP則會把取得的內容parse成XML DOM。
Pingback: :::zonble’s promptbook » 用 VBScript 自動抓取 XML 匯入 InDesign:::