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

Posted

技术标签:

【中文标题】PowerBuilder 12.5 Classic PDF SaveAs 在 Win7 x64 上创建 0 大小的文件【英文标题】:PowerBuilder 12.5 Classic PDF SaveAs creating files of 0 size on Win7 x64 【发布时间】:2013-04-06 16:08:00 【问题描述】:

平台:

Windows 7 x64

PB 12.5 经典版

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。但是,它不适用于两者。

可能出了什么问题?有人有什么想法吗?我已经在网络和 *** 上搜索了解决方案,每个人似乎都指向 x32 平台(在我看来)以及 XP 上。我之前的 XP 安装工作正常。我现在在 Win7 x64 上,需要它来处理它。

TIA

【问题讨论】:

【参考方案1】:

我想我遇到了同样的问题。问题出在 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

在此之后它应该可以工作:)

祝你好运!

兄弟。加博尔

【讨论】:

我真的不推荐使用这么古老的版本。但是,商业应用程序依赖于您下载开源应用程序来执行此操作,这很糟糕......【参考方案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 并且必须提供一些菜单或图标来完成这项工作。

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

你来了,这是我对 *** 的第一个贡献,希望对您有所帮助。

您好,

理查德·夏普

【讨论】:

以上是关于PowerBuilder 12.5 Classic PDF SaveAs 在 Win7 x64 上创建 0 大小的文件的主要内容,如果未能解决你的问题,请参考以下文章

PowerBuilder -- Len(), LenA() 与 String, Blob

powerbuilder怎么提取pbl代码

powerbuilder中怎样新建一个pbl文件

powerbuilder嵌套查询不能从单文本框中取值

powerbuilder如何在窗口中调用数据窗口的控件呢

如何从 PowerBuilder 应用程序播放哔声?