把 Datawindow 导出到PDF文件,早就想做了。为此我曾经试过几个版本的PowerBuilder(PowerBuilder 9.0,PowerBuilder 10.0),但都没有试成功。我一直以为是PB的 Bug,今天在网上搜了很多资料,终于搞定。原来要安装gs705w32.exe 和 Acrobat 的虚拟打印机。PB这样导出PDF文件,也太不专业了吧。
把 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"
运行它来实现添加虚拟打印机。
本文地址:
http://www.cnblogs.com/anjou/archive/2007/03/03/663137.html