2009-10-26 280 views
2

我的任務是自動從遠程位置收集一些報告。這些機器有時在當地由工作人員在當地使用,並且它們的使用是隨機的。生成報告的軟件有一定限制,只允許我們打印到默認打印機。採取這些報告的部門不希望有任何改變,他們喜歡得到他們的PDF。創建腳本PDF創建

我可以以編程方式更改默認打印機以使用PDFCreator打印機(並將其切換回來,以便該位置的工作人員不會注意到),並且可以以編程方式生成報告並將其發送到打印機。

我的問題是,這樣做會彈出一個窗口從PDFCreator想要一個文件名和一些元數據的PDF。

我想盡量減少彈出的窗口,並希望儘可能使我的報告收集儘可能不影響本地用戶。

有沒有簡單的方法來自動化PDFCreator交互,或者我離開使用SendMessage(或類似)和模擬用戶交互?

PDFCreator不是必需的,我也會爲解決這個問題的其他PDF打印類型的軟件提供建議。

回答

1

PDFCreator是一個VB封裝輪ghostscript所以你應該能夠修改PDFCreator不彈出對話框,並以其他方式給它的文件名。

或者,您可以使用PostScript打印機驅動程序,將輸出指向FILE:然後您可以通過編程方式調用ghostscript將PS自己轉換爲PDF。我看不到一種方法來阻止Windows內置postscript驅動程序創建一個對話框,當端口設置爲FILE時,並且當端口設置爲PSFile時,我無法確定文件的位置。但是,GSPSprinter.html有關於如何將Ghostscript PostScript打印機設置爲固定文件位置的說明,因此您不應該得到任何對話框。

+0

我喜歡直接調用Ghostscript的想法。假設我可以照顧將PS轉換爲PDF(我猜是使用Ghostscript DLL),那麼我怎樣才能讓軟件先吐出PS文件呢? – mrduclaw 2009-10-29 16:06:10

+0

@mrduclaw我已經修改了我的答案來解決這個問題,但基本上你使用的是一個postscript打印機驅動程序(例如,Apple Laserwriter內置於Windows)並將輸出重定向到文件。 – danio 2009-10-30 09:51:13

+0

@danio非常感謝您的幫助! – mrduclaw 2009-11-17 03:23:55

1

AFAIK,你只剩下玩SendMessage遊戲了。這並沒有那麼糟糕,只需抓一個Spy ++的副本就可以玩得開心!

0

的PDFCreator的命令行幫助說 你可以通過/ NoStart關閉打印窗口 您可以提供一個.ini文件是這樣的:

「C:\ Program Files文件\的PDFCreator \ PDFCreator.exe」

[菜單] UseAutosave = 1 UseAutosaveDirectory = 1 :包含 「自動」 選項/ NoStart /OptionsFile"C:\dev\convert\convert.ini 「/PF"DOC_TO_CONVERT.doc」

AutosaveFormat = pdf AutosaveDirectory = NoConfirmMessageSwitchingDefaultprinter = 1