关于导出pdf文件成功后,但是打不开的问题
我按照下面的方法,成功saveas出一个pdf文件.但是这个pdf文件通过Adobe Acrobat6.0打不开,提示“没有页面可打”
----------------------------
.下载安装gs705w32.exe
网址: ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/gs705
也可下载安装ghostscript7.06,但pb9不支持gs8.0及其以上版本!
2.针对PowerBuilder9.0
添加入path环境变量
gs705w32.exe 的安装默认路经为c:/gs(可以修改)
添加环境变量path:
C:\gs\gs7.05\bin
若升级为PB9.01或PB9.01以上则不需添加此环境变量。
(偶就是在这里犯了大错,先是看到了9.0的帮助里说要设置path变量,以前用java习惯了竟然设到了classpath上
,后来又看到9.01的帮助上说只要用gs705w32.exe安装就不用设置环境变量,也没有想到要去升级再试试或仔细
考虑环境变量的问题,就认为不会是这里出了错,一味的去搞虚拟打印机啊什么的,毫无效果,还以为是sybase在
吹牛,惭愧啊!)
3.安装虚拟打印机
直接在"控制面板">"打印机和传真">"添加打印机",
端口任意,默认的LPT1就可以,反正我们也不是用它做打印功能
关键是驱动的选择,此驱动是PowerBuilder9.0自带的,就在PowerBuilder9.0的安装文件夹下,
选择从"磁盘安装">"Sybase\Shared\PowerBuilder\drivers",
此时选择Adobe厂商的inf文件"ADIST5.INF",读取到五个驱动:
"Acrobat Distiller",
"Acrobat Distiller CS",
"Acrobat Distiller CT",
"Acrobat Distiller J",
"Acrobat Distiller K"
选择第一个"Acrobat Distiller"(其它四个也可以,有什么区别到现在偶还不知道),下一步即可>"安装完毕"
也可以在Sybase\Shared\PowerBuilder\drivers下编辑.BAT文件,写入:
rundll32.exe printui.dll,PrintUIEntry /if /f .\\ADIST5.INF /r "LPT1:" /b "Acrobat Distiller" /m
"Acrobat Distiller"
运行它也可实现添加虚拟打印机!
在菜单中使用save row as生成pdf报表:
在datawindow的Data Export中设置Format to configure为PDF
设置Method为Distill!
选中Distill Custom PostScript
设置默认打印机为PDF虚拟打印机:
在Printer Setup中选中Acrobat Distiller ...
最后File>save row as>pdf>... 就OK了!!
在代码中利用saveas()生成pdf报表:
int li_ret,li_ret2
string ls_docname, ls_named
li_ret2 = GetFileSaveName("Save file", ls_docname, ls_named, "pdf","pdf file (*.pdf), *.pdf" )
messagebox("TEST","ls_docname = "+ls_docname)
//Saving as PDF select the distill method
dw_1.Object.DataWindow.Export.PDF.Method = Distill!
//select printer
dw_1.Object.DataWindow.Printer = "Acrobat Distiller"
dw_1.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"
//printing pdf files
IF (li_ret2 = 1) THEN
li_ret = dw_1.SaveAs(ls_docname, PDF!, false)
else
return
end if
if li_ret=1 then
messagebox("Message","Successful!")
else
Messagebox('Error','Failed!!!',StopSign!)
end if