2016-01-29 94 views
0

嗨,我試圖用ItextSharp.dll讀取各種pdf文件,其中一些嘗試讀取它時會引發異常。這是一個例外:「文檔沒有頁面根目錄(意思是:這是一個無效的PDF)」。我在合併示例中,在Itext網頁(Merge-Example)中做了一些測試,並且這些都是成功的。那麼,有人能指導我看看我做錯了什麼嗎? 這是我的代碼:ItextSharp-Exception in the reader initialization「The document has no page root」

public void MergeFiles(String[] strFiles, String strFileresult) 
    { 
     Document document = new Document(); ; 
     PdfCopy copy; 

     copy = new PdfCopy(document, new FileStream(strFileresult, FileMode.Create)); 
     document.Open(); 

     PdfReader[] reader = new PdfReader[3]; 

     for (int i = 0; i < strFiles.Count(); i++) 
     { 

      reader[i] = new PdfReader(strFiles[i]); 
      copy.AddDocument(reader[i]); 
     } 
     document.Close(); 
     for (int i = 0; i < reader.Count(); i++) 
     { 
      reader[i].Close(); 
     } 
    } 

回答

0

我不知道是什麼導致你確切的問題,但一旦我們擺脫了不必要的內部陣列,並切換到using模式得到自動清理一切工作就好了。

public void MergeFiles(string[] strFiles, String strFileresult) { 
    using(var document = new Document()) { 
     using (var copy = new PdfCopy(document, new FileStream(strFileresult, FileMode.Create))) { 

      document.Open(); 

      foreach(var file in strFiles) { 
       using (var reader = new PdfReader(file)) { 
        copy.AddDocument(reader); 
       } 
      } 

      document.Close(); 
     } 
    } 
} 
+0

感謝您的回覆,我嘗試了您的方法,但一直在這一行中拋出相同的異常「使用(var reader = new PdfReader(file))」。 這個例外只出現在一些文件中,但奇怪的是:測試頁正在處理好衝突文件。 –

+0

你可以發佈問題文件供我們檢查嗎? –

+0

確定這是該文件。 [PDF](https://drive.google.com/folderview?id=0B76us6MtUwziNFJKUkxwczlQTkE&usp=sharing) –

相關問題