C#和Ghostscript 64bit

时间:2013-08-28 21:22:31

标签: c# c++ api pinvoke ghostscript

我正在编写开源 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位版本时,我得到了typecheck( e_typecheck = -20 )错误。

我知道64位版本使用 -sDisplayFormat ,我也试过但没有运气。

任何人都知道如何在64位版本的Ghostscript库中初始化设备?我不认为我错过了什么。这是一个64位版本的ghostscript库中的错误吗?

我尝试过早期版本的Ghostscript库,我在64位版本上遇到了同样的错误。

我使用的当前版本是9.09。您可以在其中查看代码的类:Ghostscript.NET.Viewer.GhostscriptViewer.cs

1 个答案:

答案 0 :(得分:0)

解决。第一个问题是,对于64位版本,需要使用-DisplayHandle作为传入的值应该是字符串。 32位版本使用-dDisplayHandle(数字值)。第二个问题是我有StructureLayout Pack = 1.64位版本应为0。