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

Vb6 如何以编程方式将数据报告打印到pdf文件?,vb6,pdf-generation,Vb6,Pdf Generation,我正在更新旧的VB6代码,以将其数据报告保存为PDF格式,而不是打开打印对话框 我不能简单地在代码中编写PDF(使用VB6 PDF库等),因为我们所有的软件都已经使用了DataReports,为每个报表编写打印代码最多也会很乏味。目前,该流程要求员工将数据报告打印到PDF打印驱动程序,手动命名并保存到需要的位置。我需要将这一切自动化,这样保存的PDF的名称和位置就可以通过编程指定,而不是手工输入 最好的解决方案是,如果DataReport只是有一个.SaveToPdf(filename)例程。最

我正在更新旧的VB6代码,以将其数据报告保存为PDF格式,而不是打开打印对话框

我不能简单地在代码中编写PDF(使用VB6 PDF库等),因为我们所有的软件都已经使用了DataReports,为每个报表编写打印代码最多也会很乏味。目前,该流程要求员工将数据报告打印到PDF打印驱动程序,手动命名并保存到需要的位置。我需要将这一切自动化,这样保存的PDF的名称和位置就可以通过编程指定,而不是手工输入

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


我尝试用谷歌搜索这个问题,但没有结果,它只返回如何手动操作的教程,就像我们现在做的一样。

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


请记住,菜单项上的省略号表示其他对话框,PrintvsPrint…

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


记住菜单项上的省略号表示附加对话框,<强>打印<强> VS >强>打印…<强> > /P> < P>您可以考虑使用PDF打印机驱动程序,允许您使用自动生成的名称将默认的“打印”配置到预设目录。

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


< P>您可以考虑使用PDF打印机驱动程序,它允许您使用自动生成的名称将默认的“打印”配置到预设目录。 有关此类产品的示例,请参见:


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

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

按照以下步骤进行导出。

只需使用Crystal Report Viewer控件并按照以下步骤进行即可:

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

按照这些步骤,导出就完成了。

这是我要做的,但没有给出如何使过程自动化的任何信息。我仍然在调用
DataReport1.PrintReport
,我该如何指定PDF的名称?在PDF打印驱动程序生成输出并询问保存位置之前,您实际上不会保存任何内容。除非你有一个程序化的PDF打印驱动程序的建议,这可能会起作用。我想我误解了你想要的东西。如果您正在寻找如何将报告发送到pdf打印机驱动程序的代码示例,则应添加用于打印的内容。这里是@Maciej的一篇文章,演示了如何使用GhostScript进行打印,如果我能将数据报告打印到PostScript文件中,GhostScript会很好地工作。我只知道如何通过打印对话框进行打印,然后导出为HTML或文本,这两种格式都与打印格式不同。我没有指定用于打印的内容,因为我愿意使用任何可以工作的内容。@Cyclotis04那么,您是否使用VB为DataReport调用类似Crystal Reports的内容?我使用的是
MSDataReportLib。DataReport
,我在设计时设计,在运行时从mdb填充,然后调用
DataReport1.PrintReport
PrintReport
可以通过将
ShowDialog
设置为false以静默方式打印到默认打印机,但这仍然会打开PDF打印驱动程序对话框(假设它是我的默认打印机-可能不是),询问我想将文件命名为什么以及保存到哪里。这是我要做的,但没有提供任何关于如何自动化流程的信息。我仍然在调用
DataReport1.PrintReport
,我该如何指定PDF的名称?在PDF打印驱动程序生成输出并询问保存位置之前,您实际上不会保存任何内容。除非你有一个程序化的PDF打印驱动程序的建议,这可能会起作用。我想我误解了你想要的东西。如果您正在寻找如何将报告发送到pdf打印机驱动程序的代码示例,则应添加用于打印的内容。这里是@Maciej的一篇文章,演示了如何使用GhostScript进行打印,如果我能将数据报告打印到PostScript文件中,GhostScript会很好地工作。我只知道如何通过打印对话框进行打印,然后导出为HTML或文本,这两种格式都与打印格式不同。我没有指定用于打印的内容,因为我愿意使用任何可以工作的内容。@Cyclotis04那么,您是否使用VB为DataReport调用类似Crystal Reports的内容?我使用的是
MSDataReportLib。DataReport
,我在设计时设计,在运行时从mdb填充,然后调用
DataReport1.PrintReport
PrintReport
可以通过将
ShowDialog
设置为false以静默方式打印到默认打印机,但这仍然会打开PDF打印驱动程序对话框(假设它是我的默认打印机-可能不是),询问我想将文件命名为什么以及保存到哪里。这是我找到的最佳解决方案。eDocPrinter PDF Pro(您链接的软件)甚至允许您通过注册表设置其所有设置,以便您可以指定名称