繁体   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