簡體   English   中英

ITextSharp合並Pdf異常

[英]ITextSharp Merge Pdf Exception

我正在嘗試將一大堆pdf合並在一起。 這就是我到目前為止

            using (FileStream stream = new FileStream(OutputDirectory+"/"+ OutputFileName+".pdf", FileMode.Create))
            {
                Document pdfDoc = new Document();
                PdfCopy pdf = new PdfCopy(pdfDoc, stream);
                pdfDoc.Open();
                Console.WriteLine("Merging files count: " + Input.Count);
                int i = 1;
                foreach (var item in Input)
                {
                    Console.WriteLine(i + ". Adding: " + item.FileName);
                    pdf.AddDocument(new PdfReader(item.FileWithPath));
                    i++;
                }
                pdfDoc.Close();
                Console.WriteLine("PDF merge complete.");
            }

但是,在正確合並了一些pdf之后,我得到了這個異常:

iTextSharp.text.exceptions.InvalidPdfException:'重建失敗:找不到預告片。 原始消息:未找到PDF startxref。

它指向我的pdf.AddDocument(新的PdfReader行

我環顧四周,有些評論提到我的文件已損壞。 但是,我可以打開並閱讀pdf文件,沒有任何問題。 我不確定現在如何繼續。

我環顧四周,有些評論提到我的文件已損壞。

您找到的信息最有可能是正確的,您嘗試讀取的文件可能已損壞。

但是,我可以打開並閱讀pdf文件,沒有任何問題。

PDF查看器經常嘗試在引擎蓋下修復一定數量的損壞。 由於查看PDF的人員通常可以快速識別出修復是成功還是僅保留了幾頁垃圾,因此這是可以的,即少了一個錯誤,而是一個功能。

另一方面,自動處理PDF的庫不應嘗試這樣做(至少不像查看者那樣嘗試),因為它們的輸出可能會直接進入某個存檔,直到幾年后才進行審核。 充滿垃圾的文檔將造成很多麻煩。

我不確定現在如何繼續。

嘗試修復有問題的PDF。

如果您在當前的Adobe Acrobat Reader中打開它,則該程序通常在關閉文檔時會詢問您是否要保存該文檔。 實際上,這將保存一個修復的版本,iText很可能會接受,而無需多加修改。

如果這不起作用,即Adobe Acrobat Reader無法提供安全的修復版本或iText甚至不接受修復的版本,請在此處共享有問題的PDF進行進一步分析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM