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 ライブラリでデバイスをディスプレイとして初期化する方法を知っている人はいますか? 私は何かが欠けているとは思わない。これは Ghostscript ライブラリの 64 ビット バージョンのバグですか?

以前のバージョンの Ghostscript ライブラリを試しましたが、64 ビット バージョンでも同じエラーが発生します。

私が使用している現在のバージョンは9.09です。コードを見ることができるクラス: Ghostscript.NET.Viewer.GhostscriptViewer.cs

4

1 に答える 1

0

解決しました。最初の問題は、64 ビット バージョンの場合、渡される値が文字列でなければならないため、-sDisplayHandle を使用する必要があることでした。32 ビット版は -dDisplayHandle (数値) を使用します。2 番目の問題は、StructureLayout Pack = 1 だったことです。64 ビット バージョンは 0 にする必要があります。

于 2013-08-30T14:50:24.017 に答える