我正在尝试将一大堆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。我不确定现在该如何继续。
我环顾四周,一些评论提到我的文件已损坏。
您发现的信息很可能是正确的,您尝试阅读的文件可能已损坏。
但是,我能够毫无问题地打开并阅读源pdfs。
PDF观众经常试图修复一定程度的腐败。由于查看PDF的人通常可以快速识别修复是否成功或者只留下一些垃圾页面,这是好的,即少了一个bug,更多的是一个功能。
另一方面,自动处理PDF的库不应该尝试这个(至少没有观众那么多),因为他们的输出可能会直接进入某些存档,直到几年后的审计才会被检查。一个充满垃圾的文件会带来很多麻烦。
我不确定现在该如何继续。
尝试修复有问题的PDF。
如果您在当前的Adobe Acrobat Reader中打开它,程序通常会在关闭文档时询问您是否要保存文档。这实际上会保存一个修复版本,iText很可能会毫不费力地接受它。
如果这不起作用,即如果Adobe Acrobat Reader不提供安全修复版本或iText甚至不接受修复版本,请在此处分享有问题的PDF以供进一步分析。