PB9如何实现datawindow打印导出PDF,PB导出PDF?
之前的saveas导出pdf,设置非常麻烦。需要
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")
就证明这个打印机也不错。我找到几个别人的截图,大家有空去研究吧
上面的代码里面只是用编程方式设置了这些属性。