迭代实例化itextsharp pdfreader

早上好,我已经测试了版本5.5.10甚至是版本7,但问题仍然是相同的(即使版本7更快一点) `Dim document As Document = New Document Dim PdfCopy As PdfSmartCopy = New PdfSmartCopy(document, New FileStream(filename, FileMode.Create)) document.Open() Dim numPdf As Integer = pdfs.Count For intI = 0 To numPdf - 1 strFile = pdfs(intI) Debug.Print(Now.ToString) Dim reader As PdfReader = New PdfReader(strFile) 'SLOW Debug.Print(Now.ToString) Dim pages As Integer = reader.NumberOfPages For intJ = 0 To pages - 1 document.SetPageSize(reader.GetPageSizeWithRotation(1)) Dim page As PdfImportedPage = PdfCopy.GetImportedPage(reader, intJ + 1) PdfCopy.AddPage(page) Next reader.Close() reader = Nothing Next document.Close()` 任何建议都将不胜感谢

回答(1)

2 years ago

该示例文档SAwzwnZoiGtD.pdf(由评论中的OP提供)已被破坏:其主要交叉引用部分声称它有37个条目,但该表实际上只有35个条目...

因此,iText尝试在为其实例化 PdfReader 时重建交叉引用 . 这可能是某种缓慢的原因,特别是因为PDF中存在其他奇怪的伪像,例如间接PDF对象8和9之间有一个"0.02 w":

8 0 obj
<< /Type /Font /Subtype /Type1 /Name /ETI /BaseFont /Arial,Italic /Encoding 3 0 R >>
endobj
0.02 w
9 0 obj

这些伪影也会妨碍修复机制 .