请教:PB9.0使datawindow生成pdf报表

milan1980 2004-10-05 07:05:56
这已经是一个老问题了,前面已经有好多人问过,但却没有明确的答复。
我已经抠了几天,利用saveas()生成html、xls文件都没有问题,但是到pdf就有问题了,不是生成不了文件就是生成的pdf文件用Adobe Reader 打不开。
帮助文档所说的需要GNU Ghostscript我也照着安装了,不过全是英文资料看的不是很透彻,还希望大虾指点:

To support saving as PDF using GNU Ghostscript, Ghostscript files are installed with PowerBuilder in Sybase\Shared\PowerBuilder\gs7.05. The default PostScript printer driver and related files are installed in Sybase\Shared\PowerBuilder\drivers.

When you deploy applications that use the ability to save as PDF using the distill method, you must deploy the gs7.05 and drivers directories in the same directory as the pbdwe90.dll runtime file. For example, if you deploy your application and pbdwe90.dll and the other PowerBuilder runtime files in a directory called MyApplication, the Ghostscript files must be deployed in MyApplication\gs7.05, and the default PostScript printer driver and related files must be deployed in MyApplication\drivers.
这是帮助文档里介绍的第一种方法,希望可以解决问题。
我使用的代码:
第一套:dw_1.SaveAs("D:\test2\aaa.pdf",pdf!,true)

第二套:
int li_ret
dw_1.Object.DataWindow.Export.PDF.Method = Distill!
dw_1.Object.DataWindow.Printer = "\\prntsrvr\pr-6"
dw_1.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"
li_ret = dw_1.SaveAs("D:\test2\aaa.pdf", pdf!, true)

第三套:
int li_ret
dw_1.Modify("Export.PDF.Method = XSLFOP! ")
dw_1.Modify("Export.PDF.xslfop.print='Yes'")
li_ret = dw_1.SaveAs("d:\test\PDFtemp2.pdf", PDF!, true)

安装GNU Ghostscript之前还可以生成pdf文件,就是打不开,安装GNU Ghostscript之后就生成不了了,只是自动打开一个tiff文件。
这个问题好像在csdn上已经存活好长时间了,好像有好多人都遇到此问题,问出来大多数虾们都说简单,却不说具体如何解决,如果是我们安装的问题,请指教!
...全文
1214 31 打赏 收藏 举报
写回复
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
milan1980 2004-10-19
  • 打赏
  • 举报
回复
1.下载安装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
milan1980 2004-10-19
  • 打赏
  • 举报
回复
楼上说的是要装adobe acrobat里面的一个adobe writer,也是一个虚拟打印机,但是不是共享软件。我这里用的是免费的驱动,少后会为大家整理出来的,不要急,需要时间!
kewenfeng 2004-10-18
  • 打赏
  • 举报
回复
也希望楼主帖出来,谁都有犯低级错误的时候,如果大家都把自己的错误说出来,那么大家都能够很快知识和经验。
强烈要求楼主帖出来,大家共同学习!!
  • 打赏
  • 举报
回复
注意要装adobe acrobat的完整版,光有reader不行
  • 打赏
  • 举报
回复
装了adobe acrobat的完整版,就会自动装上一个adobe pdf虚拟打印机,只要把这个设为默认打印机,然后dw_1.print()即可。
shizan 2004-10-16
  • 打赏
  • 举报
回复
顶啊,希望楼主贴出来啊。
还有,如果打包的话,路径怎么设置啊,都需要那些文件啊。
没整明白,我下载安装gs8.0 ,但没好用啊,具体怎么弄啊 ,真着急。
tw829 2004-10-12
  • 打赏
  • 举报
回复
新知識點!
lzheng2001 2004-10-12
  • 打赏
  • 举报
回复
把代码贴出来看看嘛,大家来这里是为了共同进步的!
sywen 2004-10-12
  • 打赏
  • 举报
回复
說說嗎,免得大家犯同樣的錯誤!
milan1980 2004-10-12
  • 打赏
  • 举报
回复
感谢大家这些天的热心帮助,
我的问题已经解决了,
是我犯了一个低级错误,
在这实在不好意思说出口!
有还没有实现此功能的可以联系我
mail:lukychang@163.com
huichang@hit.edu.dn
msn:huiwang80@msn.com
明天结题!
shizan 2004-10-11
  • 打赏
  • 举报
回复
顶啊!!!!我也很需要该功能,非常的着急。
milan1980 2004-10-09
  • 打赏
  • 举报
回复
这回安装了完整的Adobe Acrobat 5.0,但是破解版(我所需要的是完全的版权),
现在可以将datawindow保存成pdf,但不是我所指定的路径和文件名。
而且也不知道现在gs还起什么作用,我都晕了,也不知道先前只安装Adobe PostScript drivers 时到底缺了什么插件,我现在都被搞晕了,saveas()方法也没有办法进去看,出错了就只返回-1,什么用都没有,根本不知道哪里出的错,还请大虾们多帮忙啊!
稍后代码奉上!
milan1980 2004-10-08
  • 打赏
  • 举报
回复
Into a temporary directory on your computer, download gs705w32.exe from the gs705 directory, or gs706w32.exe from the gs706 directory, at ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu.

You can find a list of alternative mirror sites on the Ghostscript Web site at http://www.ghostscript.com/doc/gnu/gnu705.htm.

ys_w 2004-10-08
  • 打赏
  • 举报
回复
gs7.05 哪里有的下,我用PB9 7171也不行。
milan1980 2004-10-08
  • 打赏
  • 举报
回复
up!
milan1980 2004-10-08
  • 打赏
  • 举报
回复
up!
milan1980 2004-10-07
  • 打赏
  • 举报
回复
请问是否需要引用pbdwe90.dll
cbh117 2004-10-07
  • 打赏
  • 举报
回复
帮你顶,我也想知道。
cbh117 2004-10-07
  • 打赏
  • 举报
回复
顶。
cbh117 2004-10-07
  • 打赏
  • 举报
回复
帮你顶,我也想知道。
加载更多回复(11)
发帖
DataWindow

604

社区成员

PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
帖子事件
创建了帖子
2004-10-05 07:05
社区公告
暂无公告