我正在编写开源 C# Ghostscript 包装器。你可以试试看看( http://ghostscriptnet.codeplex.com )。大多数功能已实现,并且适用于两个版本 (x86/x64)。我遇到的问题是当我初始化显示设备以将 pdf 直接呈现到屏幕时(我成功实现了 gsapi_set_display_callback 回调)。
我使用的参数如下:
string[] args = new string[] {
"",
"-sDEVICE=display",
"-dTextAlphaBits=4",
"-dGraphicAlphaBits=4",
"-dDisplayHandle=1234",
"-dDisplayResolution=72",
"-dDisplayFormat=" + ((int)DISPLAY_FORMAT_COLOR.DISPLAY_COLORS_RGB |
(int)DISPLAY_FORMAT_ALPHA.DISPLAY_ALPHA_NONE |
(int)DISPLAY_FORMAT_DEPTH.DISPLAY_DEPTH_8 |
(int)DISPLAY_FORMAT_ENDIAN.DISPLAY_LITTLEENDIAN |
(int)DISPLAY_FORMAT_FIRSTROW.DISPLAY_BOTTOMFIRST).ToString() };
这个论点在 32 位版本上运行良好 并且我能够将 pdf 页面呈现到屏幕上。初始化工作正常。
当我切换到 64 位版本 时,出现类型检查 (e_typecheck = -20) 错误。
我知道 64 位版本使用 -sDisplayFormat 我也尝试过但没有成功。
有人知道如何在 64 位版本的 Ghostscript 库上将设备初始化为显示器吗?我不认为我遗漏了什么。这是 64 位版本的 ghostscript 库中的错误吗?
我尝试了早期版本的 Ghostscript 库,但在 64 位版本上遇到了同样的错误。
我使用的当前版本是 9.09。您可以在其中查看代码的类:Ghostscript.NET.Viewer.GhostscriptViewer.cs
最佳答案
已解决。第一个问题是对于 64 位版本,需要使用 -sDisplayHandle,因为传入的值应该是字符串。 32 位版本使用 -dDisplayHandle(数字值)。第二个问题是我的 StructureLayout Pack = 1。64 位版本应该是 0。
关于C# 和 Ghostscript 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18498443/