我正在更新旧的VB6代码以将其DataReports保存为PDF,而不是打开打印对话框。
我不能简单地在代码中编写PDF(使用VB6 PDF库等),因为我们所有的软件都已经使用了DataReports,并且为每个软件编写打印代码充其量是乏味的。目前,该流程要求员工将DataReport打印到PDF打印驱动程序,手动命名并将其保存到需要的位置。我需要自动化所有这些,以便可以以编程方式指定保存的PDF的名称和位置,而不是手动输入。
如果DataReport只有一个.SaveToPdf(filename)
例程,那么最好的解决方案就是。最糟糕的情况是,我发现自己使用SendKeys
自动执行流程。但是,此解决方案需要在具有多个可能的打印机的环境中工作(因此PDF打印驱动程序可能不是默认打印机),而是在Windows XP,Vista或7上。
我毫无结果地尝试使用谷歌搜索问题,只返回有关如何手动操作的教程,就像我们现在一样。
答案 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
按照以下步骤操作并完成导出。