2011-06-06 209 views
0

我正在更新旧的VB6代码以将其DataReports保存为PDF,而不是打开一个打印对话框。如何以编程方式将DataReport打印到PDF文件?

我不能简单地在代码中使用PDF(使用VB6 PDF库等),因为我们所有的软件都已经使用了DataReports,并且为每个软件编写打印代码都是件单调乏味的事情。目前,该流程要求员工将DataReport打印到PDF打印驱动程序,手动命名并将其保存到需要的位置。我需要自动完成这一切,以便可以以编程方式指定保存的PDF的名称和位置,而不是手动输入。

最好的解决方案是如果DataReport只是有一个.SaveToPdf(filename)例程。最糟糕的情况是,我看到我自己使用SendKeys自动化了这个过程。但是,此解决方案需要在具有多种可能的打印机(因此PDF打印驱动程序可能不是默认设置)以及Windows XP,Vista或7的环境中工作。

我已经毫无结果地尝试使用Google搜索问题,它只返回如何手动完成的教程,就像我们现在所做的那样。

回答

2

你可能会考虑使用PDF打印机驱动程序,它允许您配置沉默“印刷”到预设目录使用自动生成的名称。

对于这样的产品的例子,请参阅:

http://www.iteksoft.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=21

+0

这是我找到的最佳解决方案。 eDocPrinter PDF Pro(您链接的软件)甚至允许您通过注册表设置其所有设置,因此您可以指定名称和目录等。Adobe PDF Printer允许使用静默模式,但我没有看到以任何方式编程设置其设置。 – dlras2 2011-06-08 04:42:21

1

我会创建一个对话框,让用户输入打印机(驱动程序)名称,保存目录和文件命名指南,然后将其保存到本地ini文件或注册表中。您将需要两个打印按钮/菜单。一个使用默认(保存)设置直接打印到打印机,另一个打开他们现在看到的打印窗口,以便他们可以执行自定义打印。

记住上一个菜单项的省略号表示其他对话框,打印 VS 打印...

+0

这是我会做的,但没有提供任何有关如何自动化过程的信息。我仍在调用'DataReport1.PrintReport',我怎样才能指定PDF的名字?在PDF打印驱动程序生成输出之前,您实际上不会保存任何内容,然后会询问您将其保存在哪里。除非您对可能有效的编程PDF打印驱动程序有任何建议。 – dlras2 2011-06-06 17:17:11

+1

我想我误读了你正在寻找的东西。如果您想了解如何将报告发送到PDF打印机驱动程序的代码示例,则应添加您用于打印的内容。这里是@Maciej的一篇文章,演示使用GhostScript打印,http://stackoverflow.com/questions/2599925/how-to-print-pdf-on-default-network-printer-using-ghostscript-gswin32c-exe-shel – jac 2011-06-06 17:37:25

+0

如果我可以将DataReport打印到PostScript文件,GhostScript可以很好地工作。我所知道的只是通过打印对话框进行打印,并以HTML或文本格式导出,这两种格式都不会与打印格式相同。我没有详细说明我用于打印的内容,因为我愿意使用任何可以工作的东西。 – dlras2 2011-06-06 17:49:54

0

只要使用水晶报表查看器控件,并按照步骤:

Set objRpt = objApp.OpenReport("type report path and name") 

objRpt.DiscardSavedData 
dim filepath as string 
filepath = report path & report filename 

With objRpt 

    .ExportOptions.FormatType = crEFTPortableDocFormat 
    .ExportOptions.DestinationType = crEDTDiskFile 
    .ExportOptions.DiskFileName = 'filepath string goes here 
    .ExportOptions.PDFExportAllPages = True 
    .Export False 
End With 

按照以下步骤,出口完成。

相关问题