PowerBuilder 12.5 Classic PDF SaveAs在Win7 x64上创建0大小的文件

时间:2013-04-06 16:08:00

标签: pdf-generation ghostscript powerbuilder datawindow

平台:

Windows 7 x64

PB 12.5 Classic

Ghostscript 9.07(安装了x32和x64)

HP Laserjet PS打印机安装为“Sybase DataWindow PS”


Datawindow的“数据导出”选项卡具有要配置的格式:PDF和方法:Distill。未选中复选框“Distill custom postscript”和“Print using XSLFOP”。

点击File | Run/PreviewFile | Save Rows As并选择PDF作为保存类型,然后输入pdf文件名并单击保存。它在消息框中说Save Rows As failed。我发现该文件已在磁盘上创建,但大小为0字节。

我注意到手册指出如果没有安装Ghostscript会发生这种情况。但是,我已经安装了第一个x64,然后是x32版本的Ghostscript。我在PB手册中的某处安装了x64,它提到我需要为操作系统平台安装Ghostscript,因为我在x64 Win7上安装了x64 Ghostscript。但是,它并不适用于两者。

可能有什么不对?任何想法?我搜索了网络和stackoverflow的解决方案,每个人似乎都指向x32平台(在我看来)和XP一样。之前我的XP安装工作正常。我现在使用的是Win7 x64,需要这个才能使用它。

TIA

2 个答案:

答案 0 :(得分:2)

我想我遇到了同样的问题。问题出在Ghostscript软件的版本中:

http://ghostscript.com/pipermail/gs-bugs/2012-July/026615.html

您应该卸载Ghostscript并重新安装此版本:Ghostscript 8.71。你可以从这里下载:

http://sourceforge.net/projects/ghostscript/files/GPL%20Ghostscript/8.71/ http://sourceforge.net/projects/ghostscript/files/GPL%20Ghostscript/8.71/gs871w64.exe/download

在此之后它应该工作:)

祝你好运!

溴。的Gabor

答案 1 :(得分:2)

大约18个月前,我们遇到了这个问题。 IIRC的基本问题是打印机的驱动程序必须是64位,然后必须使用相应的64位Ghostcript exe gswin64c.exe。据我所知,Powerbuilder是一个32位应用程序,很难连接到gswin32c.exe。

我最终不得不手动完成Powerbuilder所做的事情。首先,我必须通过搜索注册表的相关部分找到gswin32c.exe或gswin64c.exe的路径。这意味着搜索64位部分和32位部分,因为我们的应用程序不仅仅运行在64位机器上。我想我最终使用ProcessMonitor和ProcessExplorer来观察Powerbuilder的运行并模仿它在做什么。

确定Ghostscript-EXE的路径后,您可以手动将打印机设置为“Sybase DataWindow PS”并执行pDw.Object.DataWindow.Print.FileName = sz_pathps,其中sz_pathps是临时文件的路径,其中PostScript文件将通过蒸馏器生成。然后你做pDw.print(false,false)并且你有一个PostScript文件。

然后,您可以使用在注册表中找到的exe的路径手动调用GhostScript。我使用的命令行参数是

-q -dNOPAUSE -dBATCH -dSAFER -sDEVICE = pdfwrite -sOutputFile = xxxxx.pdf -c .setpdfwrite -f yyyyy.ps

xxxxx.pdf是您希望生成的PDF文件的路径,yyyyy.ps是您使用蒸馏器生成的PS文件的路径。

手动调用GhostScript-Exe意味着调用CreateProcess,然后调用WaitForSingleObject。

这当然意味着您无法再使用dw.saveas,并且必须提供一些菜单或图标来完成这项工作。

这确实很混乱,但我别无选择。它是“必备”功能,所以我不得不这样做。

你有,这是我对stackoverflow的第一个贡献,我希望它有所帮助。

问候,

理查德夏普