PowerBuilder 数据窗口 导出 pdf 文件

摘自:http://blog.csdn.net/sunfor/article/details/8197888

把 Datawindow 导出到PDF文件,早就想做了。为此我曾经试过几个版本的PowerBuilder(PowerBuilder 9.0,PowerBuilder 10.0),但都没有试成功。我一直以为是PB的 Bug,今天在网上搜了很多资料,终于搞定。原来要安装gs705w32.exe 和 Acrobat  的虚拟打印机。PB这样导出PDF文件,也太不专业了吧。

1. 下载安装gs705w32.exe
     http://www.processlist.com/info/gs705w32.html
2.  安装 gs705w32.exe ,默认安装路经为c:/gs。
3.  安装虚拟打印机 
     1) 直接在 控制面板 > 打印机和传真 > 添加打印机,端口任意,默认的LPT1就可以;
     2) 打印机驱动是PowerBuilder9.0自带的,就在PowerBuilder9.0的安装文件夹下,
         选择从 磁盘安装 > X:\Program Files\Sybase\Shared\PowerBuilder\drivers, 选择 ADIST5.INF,读取到五个驱动:
              Acrobat  Distiller, 
              Acrobat  Distiller  CS, 
              Acrobat  Distiller  CT, 
              Acrobat  Distiller  J, 
              Acrobat  Distiller  K
         选择第一个Acrobat  Distiller
4. 在代码中利用SaveAs()输出 pdf 文件: 

    int li_rc
     string ls_title = "输出 pdf 文件"
     string ls_PathName, ls_FileName
     
     // 选择输出文件
     li_rc = GetFileSaveName(ls_title, ls_PathName, ls_FileName, "pdf","pdf file (*.pdf), *.pdf")  
       
     if(li_rc = 1) then
         // 使用 Distill 方法输出 pdf 文件
         dw_1.Object.DataWindow.Export.PDF.Method = Distill!    
          
         // 选择打印机
         dw_1.Object.DataWindow.Printer = "Acrobat Distiller"  
         dw_1.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"
         
         // 输出 pdf 文件
         if(dw_1.SaveAs(ls_PathName, PDF!, true) = 1) then
             messagebox(ls_title,"保存成功!")
         else
             Messagebox(ls_title,"保存失败!",StopSign!)
         end if
     end if
 

以上程序在PowerBuilder 9.01 Build 7096下调试通过。

另外,你也可以在X:\Program Files\Sybase\Shared\PowerBuilder\drivers下编辑.BAT文件,写入: 
rundll32.exe  printui.dll,PrintUIEntry  /if  /f  .\\ADIST5.INF  /r  "LPT1:"  /b  "Acrobat  Distiller"  /m  "Acrobat  Distiller" 
运行它来实现添加虚拟打印机。

posted on 2013-01-29 15:14  另一只兔子  阅读(1509)  评论(1编辑  收藏  举报

导航