如何以编程方式将数据报告打印到pdf文件?

时间:2011-06-06 16:24:53

标签: vb6 pdf-generation

我正在更新旧的VB6代码以将其DataReports保存为PDF,而不是打开打印对话框。

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

如果DataReport只有一个.SaveToPdf(filename)例程,那么最好的解决方案就是。最糟糕的情况是,我发现自己使用SendKeys自动执行流程。但是,此解决方案需要在具有多个可能的打印机的环境中工作(因此PDF打印驱动程序可能不是默认打印机),而是在Windows XP,Vista或7上。

我毫无结果地尝试使用谷歌搜索问题,只返回有关如何手动操作的教程,就像我们现在一样。

3 个答案:

答案 0 :(得分:2)

您可以考虑使用PDF打印机驱动程序,它允许您使用自动生成的名称将静音“打印”配置到预设目录。

有关此类产品的示例,请参阅:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

只需使用Crystal Report Viewer Control并按照以下步骤操作:

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

按照以下步骤操作并完成导出。