2009-10-26 177 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