【发布时间】:2016-10-26 15:33:24
【问题描述】:
只需将一些文本标记为 pdf,itextsharp 就会创建一个损坏的文件。当试图阅读 pdf 时,它会抛出如下错误
“iTextSharp.text.exceptions.InvalidPdfException”类型的异常 附加信息:文档没有页面根(意思是:它是无效的 PDF)。
以下代码用于编辑pdf并标记文本内容
using (PdfReader pdfReader = new PdfReader(System.IO.File.ReadAllBytes(pdfPath)))
using (Stream pdfStream = new FileStream(pdfPath, FileMode.Open, FileAccess.ReadWrite))
{
PdfReaderContentParser parserReason = new PdfReaderContentParser(pdfReader);
PdfStamper pdfStamper = new PdfStamper(pdfReader, pdfStream);
PdfContentByte pdfContentByte = pdfStamper.GetOverContent(pdfReader.NumberOfPages);
BaseFont baseFont = BaseFont.CreateFont(BaseFont.COURIER_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
pdfContentByte.SetColorFill(BaseColor.BLACK);
pdfContentByte.SetFontAndSize(baseFont, 12);
pdfContentByte.BeginText();
TextMarginFinder finderReason = parserReason.ProcessContent(pdfReader.NumberOfPages, new iTextSharp.text.pdf.parser.TextMarginFinder());
pdfContentByte.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "Some text : " + annotation, finderReason.GetLlx(), finderReason.GetLly() - 20f, 0);
pdfContentByte.EndText();
pdfStamper.Close();
}
pdf 文件是使用 apache fop 1.1 创建的,并且 itextsharp 用于编辑文件。问题并非发生在所有 pdf 中,而仅发生在某些文件中。 You can find the PDF which creates the issue here
【问题讨论】:
-
发布有问题的 PDF 也可能有助于检查它是否有/没有页面根目录。
-
感谢@confusedandamused。我已经上传了一个文件并使用链接更新了我的问题。