1

我正在编写开源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

4

1 回答 1

0

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

于 2013-08-30T14:50:24.017 回答