早上好,我正在使用itextsharp开发一个pdf合并,以创建由打印机处理的sigle文件作为唯一作业。对于一些pdf(并非全部),pdfreader的实例化很慢(大约需要1分钟)。我已经测试了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()
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()
任何建议将不胜感激
感谢
答案 0 :(得分:1)
该示例文档SAwzwnZoiGtD.pdf(由评论中的OP提供)已损坏:其主要交叉引用部分声称它有37个条目,但该表实际上只有35个条目......
因此,iText尝试在为其实例化PdfReader
时重建交叉引用。这可能是某种缓慢的原因,特别是因为PDF中存在其他奇怪的伪像,例如有一个" 0.02 w"在间接PDF对象8和9之间:
8 0 obj
<< /Type /Font /Subtype /Type1 /Name /ETI /BaseFont /Arial,Italic /Encoding 3 0 R >>
endobj
0.02 w
9 0 obj
此类工件也会妨碍修复机制。