2009-11-13 144 views

回答

3

請嘗試從命令行運行此命令以測試它是否正在執行您所需的操作。

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

A Simple C# Wrapper for Ghostscript

+0

嗨,我現在使用gsdll32.dll,所以沒有gswin32.exe可用。我必須調用gsapi_init_with_args。從GhostScript網站,我得到了這樣的: gs -dPDFA -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor -sDEVICE = pdfwrite -sOutputFile = out-x3.pdf PDFA_def.ps input.pdf 但是當我使用參數與gsapi_init_with_args結果PDF不正確,它報告它不符合任何標準。所以這很棘手。任何人都可以幫忙 – imgen 2009-11-13 04:57:16

+0

其實它並不棘手,我給你一個命令行gswin32.exe爲了確保-dPDFA和其餘的交換機正常工作,你應該有你的安裝gswin32.exe,因爲我看到你'使用ghostscript獲勝。只需運行我給你的線路來檢查它是否有效。在你確定命令有效之後,你可以將它翻譯成gsapi_init_with_args調用 問候 – 2009-11-13 14:23:15

0

取決於你的檢查工具做報告什麼確切的偏離標準......您可能需要改變你的PDFA_def.ps以適應你的環境(和您可能需要動態地重新寫入的內容文件爲每個新的PDF/A轉換)。這是一個簡短的文件,很好的評論。

嘗試添加-Ic:/路徑/到/ gsinstalldir/lib目錄PDFA_def.ps到命令行嗶嘰直接調用提示:

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

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

測試命令行第一,然後按照推薦的方式進行。

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 「
  • ...
相關問題