2013-08-28 48 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.