【发布时间】:2021-02-03 10:40:29
【问题描述】:
我有一个在夜间运行的 vb.net 程序。它遍历一些文件夹并调用 gswin64c.exe (v 9.52) 作为其中每个 pdf 的进程。每次涉及5000个左右的pdf,所以需要几个小时。
我正在使用几个单独的调用:
获取页面区域的报告:
-dDEVICEWIDTHPOINTS=(宽度单位) -dDEVICEHEIGHTPOINTS=(高度单位) -dFIXEDMEDIA -sDEVICE=inkcov -o - -c > setpagedevice -f (pdf 名称)
转换为 CMYK:
-dSAFER -dBATCH -dNOPAUSE -dNOCACHE -dPDFX -dUseCIEColor -sProcessColorModel=DeviceCMYK -sColorConversionStrategyForImages=CMYK -sDEVICE=pdfwrite -sColorConversionStrategy=CMYK -sOutputFile=(我的文件)
一点背景:
我做了几次上面的“报告”操作,因为我需要检查每个 pdf 的几个区域中的颜色内容以确保它们是“空白”。如果报告没有显示其他颜色,我会进行 pdf 清理并从某个区域删除文本。仅当 pdf 清理操作失败时才运行 CMYK 转换(我发现失败是由于给我的 pdf 中的某些图形中使用了颜色,这似乎可以解决)
两个进程在一段时间内都可以正常工作 - 但由于某种原因,我在通过 vb.net 程序运行了几千个文件后出现以下错误:
当此错误发生时,vb.net 程序冻结并最终由我在 windows 计划事件设置中的设置结束。
问题似乎不在于特定的 pdf,而且我看不到任何其他正在运行的会与我的程序发生任何冲突的东西。
谁能指出可能出了什么问题?
感谢阅读。
【问题讨论】:
-
搜索“异常代码 0xc0000005”。您是否尝试过使用 32 位版本的 Ghostscript?
-
感谢您的建议 - 我还没有尝试过 32 位版本,所以可能值得一试 - 是什么让您认为这可能会更好?不幸的是,这个过程有点难以测试,因为我发现它有时有效,有时无效——这表明我正在处理的 pdf 存在问题。我将尝试删除 CMYK 转换位并重新测试,看看我是否可以准确找出问题所在。运行需要几个小时,所以这可能是一个漫长的调试过程......
-
由于错误是内存访问冲突,因此 64 位版本中的某些内容可能与 32 位版本的内存访问有所不同。如果您愿意的话,我已经看到了针对该错误代码测试计算机 RAM 的建议。
-
谢谢-知道这很有用。我昨晚进行了测试,但我在代码中犯了一个愚蠢的错误,所以它不能正常工作。我越来越相信是 CMYK 转换导致了问题,所以希望下一次测试能给我一些答案。
标签: vb.net crash ghostscript