【问题标题】:ITextSharp Merge Pdf ExceptionITextSharp 合并 PDF 异常
【发布时间】:2023-03-03 03:58:02
【问题描述】:

我正在尝试将一大堆 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(new PdfReader line

我环顾四周,一些 cmets 提到我的文件已损坏。但是,我可以毫无问题地打开和阅读源 pdf。我现在不确定如何继续。

【问题讨论】:

    标签: c# .net pdf itext


    【解决方案1】:

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

    您找到的信息最有可能是正确的,您尝试读取的文件可能已损坏。

    但是,我可以毫无问题地打开和阅读源 pdf。

    PDF 查看器经常尝试在后台修复一定程度的损坏。由于查看 PDF 的人通常可以快速识别修复是否成功或只留下一些充满垃圾的页面,这没关系,即更少的错误和更多的功能。

    另一方面,自动处理 PDF 的图书馆不应该尝试这样做(至少不像查看者那样多),因为它们的输出可能会直接进入某些存档,直到几年后的审计才会被检查。一个满是垃圾的文件会带来很多麻烦。

    我现在不确定如何继续。

    尝试修复有问题的 PDF。

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

    如果这不起作用,即如果 Adob​​e Acrobat Reader 不提供安全修复版本或 iText 甚至不接受修复版本,请在此处共享相关 PDF 以进行进一步分析。

    【讨论】:

      猜你喜欢
      • 2015-06-07
      • 2012-10-22
      • 2013-03-09
      • 2023-03-22
      • 2011-01-15
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多