1. 安装 gs705w32.exe

2. 设置系统path: C:\gs\gs7.05\bin (以实际安装目录为准)

3. 安装虚拟打印机 PowerBuilder9.0自带的:

Sybase\Shared\PowerBuilder\drivers\ADIST5.INF 手动添加打印机

4. 代码导出

dw_print.Object.DataWindow.Export.PDF.Method = Distill!
dw_print.Object.DataWindow.Printer = 'Acrobat Distiller'
dw_print.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"

ll_ret2 = dw_print.SaveAs('文件名称', PDF!, false)

这个方法现在对于win64不支持。各位朋友可以看看12.5这样的版本支持不。

------------------------------------------------------

今天客户提出要我给他在某个界面做一个自动打印体检表导出或者打印成pdf放到web服务器上面去。

测试了上面的思路不行,而且现在离谱的是连 gs705w32.exe也无法下载到。

我觉得直接用print成pdf(借助虚拟机)比较方便和符合。但是像doPDF和pdffactory每次都要提示保存文件名。比较麻烦。没法自动化操控。

偶尔看到一个Adobe Acrobat XI安装后的pdf打印机有个打印机首选项设置,可以设置直接保存到某个目录,而打印文件名,pb的datawindow.printer参数可以指定的。所以能实现自动化导出到某个文件夹。实现服务器自动运行,自动服务。

1. 安装 Adobe Acrobat XI,需要系列号,安装后需要验证成正式版,否则打印时会弹出。这个自己想办法。也有人说有从安装包分立的只带打印机的安装( Adobe PDF Printer v7.0,Adobe PDF Printer v9.0,Adobe PDF Printer v10.0这三个我安装了的确能显示打印机图标,但是是灰色的,打印时返回 -1 ,但是我没有找到能用的。

2. 控制面板\硬件和声音\设备和打印机》Adobe PDF打印机》右键》打印机首选项》

如图,选择导出的文件夹。并且取消打印后预览。以方便我们自动运行。

打印按钮的代码:

fileid ++

dw_1.object.datawindow.print.DocumentName=string(fileid)+".pdf"    //设置打印文档名

//dw_1.object.datawindow.printer="doPDF v7"  //有弹出保存按钮,文件名

dw_1.object.datawindow.printer="adobe PDF"    //这个就厉害了,设置好了文件名,就不弹出保存界面。

int li_i
li_i= dw_1.print()        //dw的print不选打印机,所以adobe PDF需要设置成默认打印机
messagebox('结果',String(li_i))

简单测试程序。点击按钮:

任务栏右下角提示:

导出的文件非常正常,实际工作中以系统编号pdf。这样可以给客户在web上面下载。

打开看看:

遗留的问题:adobe安装中,哪些文件构成对打印机的支持。如果可以提取那部分,就好了。

这方法只适合服务器这样的安装,不适合其他客户端的安装。费劲了。

**点击queren也是一个办法。

***后记,今天在另外一个软件里面看到了 如下代码:

li_ret = obj_pdfwriter.connecttonewobject("Bullzip.PDFPrinterSettings")
obj_pdfwriter.init()
obj_pdfwriter.setprintername("Bullzip PDF Printer")
obj_pdfwriter.setvalue("ShowSettings","never")
obj_pdfwriter.setvalue("ShowPDF","no")

就证明这个打印机也不错。我找到几个别人的截图,大家有空去研究吧

上面的代码里面只是用编程方式设置了这些属性。

dw_1.object.datawindow.print.DocumentName=string(fileid)+".pdf" //设置打印文档名。dw_1.object.datawindow.printer="adobe PDF" //这个就厉害了,设置好了文件名,就不弹出保存界面。li_i= dw_1.print() //dw的print不选打印机,所以adobe PDF需要设置成默认打印机。如图,选择导出的文件夹。之前的saveas导出pdf,设置非常麻烦。 2. 安装 gs705w32.exe ,默认安装路经为c:/gs。 3. 安装虚拟 打印 机 1) 直接在 控制面板 > 打印 机和传真 > 添加 打印 机,端口任意,默认的LPT1就可以; 2) 打印 机驱动在 PDF \drivers文件夾中, 选择 ADIST5.INF,读取到五个驱动: Acrobat Distiller, Acrobat Distiller CS, Acrobat Distiller CT, Acrobat Distiller J, Acrobat Distiller K 选择第一个Acrobat Distiller 2.powerbuilder中调用代码 打印 即可, pdf 文件会自动产生到目标路径中 dw_print.Modify( " data window .printer='Adobe PDF '") dw_print.Modify( " Data Window .Print.DocumentName='"+ls_Filena...
问题:发现把 data window 存档为 PDF 档时发生个别字段显示异常,可能是 PDF 的版本还是什么问题,无法识别导致显示为 解决方法:查看 data window 字段属性时发现,显示异常的字段,字体是英文字体 其编码格式与中文字体的编码格式不同,导致在某些版本的 PDF 不支持,显示异常。修改为支持中文的编码格式字体即可。 pb9 Data Window 有一个内置的功能可以将数据 导出 PDF 格式。要使用此功能,可以按照以下步骤操作: 1. 首先,确保 Data Window 已经创建并绑定到数据源。 2. 在代码中,使用以下语句 导出 Data Window PDF 格式:dw_1.SaveAs("文件路径\文件名. pdf ", PDF !, true) 其中,dw_1是要 导出 Data Window 实例,"文件路径\文件名. pdf "是 导出 文件的保存路径和名称。 PDF !是 导出 格式的标识符,表示要 导出 PDF 格式。true表示如果文件已经存在,则覆盖原文件。 3. 执行以上代码后, Data Window 将被 导出 PDF 文件并保存在指定路径。 需要注意的是, pb9 Data Window PDF 导出 功能依赖于操作系统内部的 PDF 打印 机驱动程序。因此,在执行 导出 操作之前,确保操作系统中已经安装了 PDF 打印 机驱动程序。 此外,还可以通过调整 Data Window 的布局和格式来优化 导出 PDF 文件。例如,可以设置 打印 纸张的大小、方向、页边距等。也可以调整字体、颜色、表格样式等,以使 导出 PDF 文件更加符合需求。 总之, pb9 Data Window 后台 导出 PDF 是一个方便且简单的功能,通过几行代码即可将数据 导出 PDF 文件,适用于各种数据报表和文档的生成需求。 ### 回答2: 在PowerBuilder 9中,可以使用 Data Window 控件的后台 导出 功能将数据窗口以 PDF 格式 导出 。 首先,需要创建一个 Data Window 对象,并在设计时设置其数据源以获取需要 导出 的数据。可以使用SQL语句或存储过程来定义数据源。 接下来,在代码中使用以下语句创建一个 Data Window Control对象,并将其与前面创建的 Data Window 对象关联起来: Data Window Control dwControl dwControl = CREATE Data Window Control dwControl. Data Object = ' data window _name' 然后,可以使用 导出 功能将数据窗口以 PDF 格式 导出 到指定位置。以下是一个示例代码: string ls_savepath ls_savepath = "C:\Output\filename. pdf " dwControl.SaveAs(ls_savepath, PDF !, false) 以上代码中,"C:\Output\filename. pdf "是保存 导出 文件的路径和文件名。 PDF !常量指示将数据窗口以 PDF 格式 导出 。最后一个参数是指 导出 过程是否需要等待完成,false表示不等待。 在运行时,执行以上代码将触发数据窗口 导出 PDF 文件到指定位置。请确保指定的路径是有效的,并且有足够的权限进行读写操作。 需要注意的是, Data Window 导出 PDF 的功能在PowerBuilder 9中是基于Ghostscript库 实现 的。因此,需要确保Ghostscript库已正确安装并配置在系统路径中,以便PowerBuilder能够调用它来进行 PDF 导出 。 ### 回答3: 在PowerBuilder 9中,我们可以通过使用 Data Window 后台 导出 功能将数据窗口 导出 PDF 文件。 要使用 Data Window 后台 导出 功能,我们需要按照以下步骤操作: 1. 首先,我们需要在 Data Window 的属性中设置 导出 格式为 PDF 。可以通过设置 Data Window 对象的保存格式属性为 PDF 实现 。 2. 接下来,我们需要创建一个 Data Store对象,并将 Data Window 对象分配给 Data Store。 3. 然后,我们可以使用 Data Store对象的SaveAs方法将 Data Window 导出 PDF 文件。在SaveAs方法中,我们需要指定 导出 文件的路径和文件名。 下面是一个示例代码,演示了如何使用 Data Window 后台 导出 功能 导出 PDF 文件: // 创建一个 Data Store对象 Data Store ds ds = CREATE Data Store // 将 Data Window 对象分配给 Data Store dw_my data .SetTransObject(ds) // 设置 Data Window 导出 格式为 PDF dw_my data .SaveFormat = PDF ! // 设置 导出 文件的路径和文件名 ds. Data Object = "d_my data " ds.SetTransObject(dw_my data ) ds.SaveAs("C:\my data . pdf ") // 释放 Data Store和 Data Window 对象 DESTROY ds DESTROY dw_my data 在上述代码中,"dw_my data "是要 导出 PDF Data Window 对象,"d_my data "是 Data Window 对象的数据源。我们可以根据实际情况修改这些对象的名称和数据源。 执行上述代码后, Data Window 对象将被 导出 为名为"my data . pdf "的 PDF 文件,保存在"C:\"路径下。 希望以上信息能够帮助您了解如何在PowerBuilder 9中使用 Data Window 后台 导出 功能 导出 PDF 文件。如果有其他问题,请随时提问!