2013-08-28 47 views
1

我在写开源代码C#Ghostscript wrapper。你可以试试看看(http://ghostscriptnet.codeplex.com)。大多数功能都已实现,并且可在两个版本上运行(x86/x64)。我遇到的问题是当我初始化显示设备直接将pdf呈现给屏幕(我成功实施了gsapi_set_display_callback回调)。C#和Ghostscript 64bit

参数,我使用的以下内容:

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

回答

0

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