2

GhostScript DLL を使用して PDF を PDF/A に変換する方法。名前がgsapi_init_with_argsのgsdll32.dllのエクスポートされた関数を呼び出す必要があることは知っていますが、正しい引数を渡すにはどうすればよいですか? ところで、私はC#を使用しています。

4

3 に答える 3

3

コマンドラインからこれを実行して、必要なことを行っているかどうかをテストしてください。

gswin32.exe -dPDFA -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=PDFA.pdf 1.pdf

Ghostscript 用のシンプルな C# ラッパー

于 2009-11-13T04:03:10.900 に答える
1

ghostscriptsharpの以下を使用して動作させました:

[DllImport("gsdll32.dll", EntryPoint = "gsapi_new_instance")]
private static extern int CreateAPIInstance(out IntPtr pinstance, IntPtr caller_handle);

[DllImport("gsdll32.dll", EntryPoint = "gsapi_init_with_args")]
private static extern int InitAPI(IntPtr instance, int argc, string[] argv);

[DllImport("gsdll32.dll", EntryPoint = "gsapi_exit")]
private static extern int ExitAPI(IntPtr instance);

[DllImport("gsdll32.dll", EntryPoint = "gsapi_delete_instance")]
private static extern void DeleteAPIInstance(IntPtr instance);

    private static void CallAPI(string[] args)
    {
        IntPtr gsInstancePtr;
        lock (resourceLock)
        {
            CreateAPIInstance(out gsInstancePtr, IntPtr.Zero);
            try
            {
                int result = InitAPI(gsInstancePtr, args.Length, args);

                if (result < 0)
                {
                    throw new ExternalException("Ghostscript conversion error", result);
                }
            }
            finally
            {
                Cleanup(gsInstancePtr);
            }
        }
    }

    private static object resourceLock = new object();

    private static void Cleanup(IntPtr gsInstancePtr)
    {
        ExitAPI(gsInstancePtr);
        DeleteAPIInstance(gsInstancePtr);
    }

args次のような文字列の配列になります。

  • "-sDEVICE = pdfwrite"
  • 「-dPDFA」
  • ..。
于 2010-11-30T22:51:11.107 に答える
0

チェッカーツールが報告する標準からの正確な偏差に依存します...PDFA_def.ps環境に合わせて変更する必要がある場合があります(また、新しいPDF / A変換ごとにそのファイルを動的に書き直す必要がある場合があります)。これは短いファイルで、よくコメントされています。

-Ic:/path/to/gsinstalldir/libを追加PDFA_def.psして、コマンドライン serge に直接呼び出すことをお勧めします。

gswin32c.exe ^
    -Ic:/path/to/gsinstalldir/lib ^
    -dPDFA ^
    -dBATCH ^
    -dNOPAUSE ^
    -dUseCIEColor^
    -sDEVICE=pdfwrite ^
    -sOutputFile=出力-PDFA.pdf ^
    PDFA_def.gs ^
    入力.pdf

また

gswin32c.exe ^
    -Ic:/path/to/gsinstalldir/lib ^
    -dPDFA ^
    -dBATCH ^
    -dNOPAUSE ^
    -dUseCIEColor^
    -sDEVICE=pdfwrite ^
    -sOutputFile=出力-PDFA.pdf ^
    c:/path/to/customized/PDFA_def.gs ^
    入力.pdf

最初にコマンドラインをテストしてから、serge が推奨するように実行してください。

于 2010-06-05T21:46:07.777 に答える