2013-08-28 1 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 라이브러리를 사용해 보았는데 64 비트 버전에서 같은 오류가 발생합니다.

내가 사용하는 최신 버전은 9.09입니다. 코드를 살펴볼 수있는 클래스 : Ghostscript.NET.Viewer.GhostscriptViewer.cs

답변

0

해결되었습니다. 첫 번째 문제는 64 비트 버전의 경우 -sDisplayHandle을 전달해야하는 값을 문자열로 사용해야하기 때문입니다. 32 비트 버전은 -dDisplayHandle (숫자 값)을 사용합니다. 두 번째 문제는 StructureLayout Pack = 1을 가졌다는 것입니다. 64 비트 버전은 0이어야합니다.