ITextSharp合并Pdf异常

问题描述 投票:0回答:1

我正在尝试将一大堆pdfs合并在一起。这就是我到目前为止所拥有的

            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行

我环顾四周,一些评论提到我的文件已损坏。但是,我能够毫无问题地打开并阅读源pdfs。我不确定现在该如何继续。

c# .net pdf itext
1个回答
0
投票

我环顾四周,一些评论提到我的文件已损坏。

您发现的信息很可能是正确的,您尝试阅读的文件可能已损坏。

但是,我能够毫无问题地打开并阅读源pdfs。

PDF观众经常试图修复一定程度的腐败。由于查看PDF的人通常可以快速识别修复是否成功或者只留下一些垃圾页面,这是好的,即少了一个bug,更多的是一个功能。

另一方面,自动处理PDF的库不应该尝试这个(至少没有观众那么多),因为他们的输出可能会直接进入某些存档,直到几年后的审计才会被检查。一个充满垃圾的文件会带来很多麻烦。

我不确定现在该如何继续。

尝试修复有问题的PDF。

如果您在当前的Adobe Acrobat Reader中打开它,程序通常会在关闭文档时询问您是否要保存文档。这实际上会保存一个修复版本,iText很可能会毫不费力地接受它。

如果这不起作用,即如果Adobe Acrobat Reader不提供安全修复版本或iText甚至不接受修复版本,请在此处分享有问题的PDF以供进一步分析。

© www.soinside.com 2019 - 2024. All rights reserved.