直接打印时 GhostScript 挂起

Posted

技术标签:

【中文标题】直接打印时 GhostScript 挂起【英文标题】:GhostScript hangs when direct printing 【发布时间】:2015-12-23 08:27:33 【问题描述】:

我们正在尝试使用 GhostScript 9.18 直接从我们的 Intranet 应用程序打印 PDF 文件,采用这种架构:

Windows Server 2012 r2 64 适用于 Windows 9.18 的 GhostScript(尝试使用 32 位和 64 位版本)

但为了我们的测试目的,我只是从命令行进行测试。 当我输入命令行时:

gswin32c.exe -dPrinted -dNOPAUSE -dNumCopies=1  -sDEVICE=mswinpr2 -sOutputFile="%printer%\\creeks\K42N1CN1" "D:\temp\test.pdf" 

\creeks\K42N1CN1 是我的网络窗口打印机 (Kyiocera)。

gswin32c.exe 挂起。我在消息框或事件查看器中看不到任何好的解释。但如果需要,我可以发布整个消息。

有趣的细节是:

如果我输入的打印机名称不正确,GhostScipt 会弹出标准 windows 打印对话框,我选择相同的网络打印机然后完美打印文档 从 PDF 文件到光栅图像 (png) 的转换运行良好。 问题在和管理员命令提示符下是一样的 删除所有可选参数确实改变了一些东西

也许我怀疑:

-sDEVICE 参数的值不正确 内存访问违规,因为当我尝试调试 GhostScript 程序时,我收到消息“Exception non gérée à 0x101eddc9 dans gswin32c.exe : 0xC0000005: Violation d'accès lors de la Lecture de l'emplacement 0x3130654e。” (抱歉是法语)。

感谢来自 Toulouse\France 的任何帮助

最好的问候

事件查看器崩溃报告:

Version=1
EventType=APPCRASH
EventTime=130953327000374373
ReportType=2
Consent=1
ReportIdentifier=a7aa1a77-a94e-11e5-80d6-0050569e7a66
IntegratorReportIdentifier=a7aa1a76-a94e-11e5-80d6-0050569e7a66
WOW64=1
NsAppName=gswin32c.exe
Response.type=4
Sig[0].Name=Nom de l’application
Sig[0].Value=gswin32c.exe
Sig[1].Name=Version de l’application
Sig[1].Value=0.0.0.0
Sig[2].Name=Horodatage de l’application
Sig[2].Value=56123d4d
Sig[3].Name=Nom du module par défaut
Sig[3].Value=gsdll32.dll
Sig[4].Name=Version du module par défaut
Sig[4].Value=0.0.0.0
Sig[5].Name=Horodateur du module par défaut
Sig[5].Value=56123d49
Sig[6].Name=Code de l’exception
Sig[6].Value=c0000005
Sig[7].Name=Décalage de l’exception
Sig[7].Value=001eddc9
DynamicSig[1].Name=Version du système
DynamicSig[1].Value=6.3.9600.2.0.0.272.7
DynamicSig[2].Name=Identificateur de paramètres régionaux
DynamicSig[2].Value=1036
DynamicSig[22].Name=Information supplémentaire n° 1
DynamicSig[22].Value=3376
DynamicSig[23].Name=Information supplémentaire n° 2
DynamicSig[23].Value=3376824fd83b1dc3948a498a9c840064
DynamicSig[24].Name=Information supplémentaire n° 3
DynamicSig[24].Value=7929
DynamicSig[25].Name=Information supplémentaire n° 4
DynamicSig[25].Value=792969fd05f031b74b3a51636e7a67ec
UI[2]=C:\Program Files (x86)\gs\gs9.18\bin\gswin32c.exe
UI[3]=gswin32c.exe a cessé de fonctionner
UI[4]=Windows peut rechercher une solution au problème en ligne.
UI[5]=Rechercher une solution en ligne et fermer le programme
UI[6]=Rechercher ultérieurement une solution en ligne et fermer le programme
UI[7]=Fermer le programme
LoadedModule[0]=C:\Program Files (x86)\gs\gs9.18\bin\gswin32c.exe
LoadedModule[1]=C:\Windows\SYSTEM32\ntdll.dll
LoadedModule[2]=C:\Windows\SYSTEM32\KERNEL32.DLL
LoadedModule[3]=C:\Windows\SYSTEM32\KERNELBASE.dll
LoadedModule[4]=C:\Windows\SYSTEM32\SYSFER.DLL
LoadedModule[5]=C:\Windows\SYSTEM32\SHELL32.dll
LoadedModule[6]=C:\Windows\SYSTEM32\GDI32.dll
LoadedModule[7]=C:\Windows\SYSTEM32\USER32.dll
LoadedModule[8]=C:\Windows\SYSTEM32\ADVAPI32.dll
LoadedModule[9]=C:\Windows\SYSTEM32\msvcrt.dll
LoadedModule[10]=C:\Windows\SYSTEM32\combase.dll
LoadedModule[11]=C:\Windows\SYSTEM32\SHLWAPI.dll
LoadedModule[12]=C:\Windows\SYSTEM32\sechost.dll
LoadedModule[13]=C:\Windows\SYSTEM32\RPCRT4.dll
LoadedModule[14]=C:\Windows\SYSTEM32\SspiCli.dll
LoadedModule[15]=C:\Windows\SYSTEM32\CRYPTBASE.dll
LoadedModule[16]=C:\Windows\SYSTEM32\bcryptPrimitives.dll
LoadedModule[17]=C:\Windows\system32\IMM32.DLL
LoadedModule[18]=C:\Windows\SYSTEM32\MSCTF.dll
LoadedModule[19]=C:\Program Files (x86)\gs\gs9.18\bin\gsdll32.dll
LoadedModule[20]=C:\Windows\SYSTEM32\comdlg32.dll
LoadedModule[21]=C:\Windows\SYSTEM32\WINSPOOL.DRV
LoadedModule[22]=C:\Windows\SYSTEM32\ole32.dll
LoadedModule[23]=C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.9600.17810_none_7c5b6194aa0716f1\COMCTL32.dll
LoadedModule[24]=C:\Windows\SYSTEM32\SHCORE.DLL
FriendlyEventName=Fonctionnement arrêté
ConsentKey=APPCRASH
AppName=gswin32c.exe
AppPath=C:\Program Files (x86)\gs\gs9.18\bin\gswin32c.exe
NsPartner=windows
NsGroup=windows8
ApplicationIdentity=C5D66B61522557FE3034ACFE0B05988E

【问题讨论】:

添加 Windows 事件查看器作为附件(如果有帮助的话) 【参考方案1】:

崩溃报告很少(如果有的话)有用。很难看出在调试时会出现访问冲突,而在不调试可执行文件时不会收到这样的消息。

但是最近在这个领域有一个修复:

http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=4703d04a6146904cab9b1b04aee1478e31df52da

因此,您可能希望获得 当前 最前沿的源代码,重新构建并尝试一下。如果您想调试 Ghostscript,您将需要获取源代码并构建调试可执行文件,尝试调试发布二进制文件是徒劳的......

哦,将 DEVICE= 设置为 mswinpr2 以外的其他值只会意味着它不会打印到您的打印机,mswinpr2 设备是唯一可以打印到 Windows 打印机的 Ghostscript 设备。

【讨论】:

Waouuu... 在我的项目中没有安排编译 GS 库!但至少修复已经完成,但我必须使用文档 [link]ghostscript.com/doc/8.54/Make.htm#PC_build 自己编译。我现在没有必要的软件。有没有建议下载的夜间版本,还是我必须等待下一个版本? 在 6 个月度发布之后没有可用的构建。我并不是说此修复程序会对您有所帮助,只是说它是相关的并且可能。如果你想在三月之前得到一个带有这个修复的二进制文件,你必须自己构建它。众所周知,VS 2013 的社区(免费)版可用于从源代码构建 Ghostscript,非常简单。 我确认这是问题所在。我没有时间重新编译.. 我将使用运行良好的转换功能。最好的问候 我也有这个问题,如果你去downloads.ghostscript.com/public你可以看到过去的版本。使用 gs916w32.exe 可以让我在 Windows 上打印而不会崩溃。

以上是关于直接打印时 GhostScript 挂起的主要内容,如果未能解决你的问题,请参考以下文章

Ghost4J/Ghostscript - 尝试将字体嵌入 PDF 时出现错误 100

Java 和 Ghostscript(ghost4j 和 gsdll32.dll)

Ghostscript.NET 无法使用选定的打印机名称进行打印

GhostScript:gswin32c 挂起,但 gswin32 有效

无法初始化 Ghostscript 解释器

使用 Ghostscript 打印时页面裁剪和旋转不正确