使用iText7的GetTextFromPage函数提取PDF文本失败求助
问题分析与解决方案
你的代码问题在于:用PdfWriter创建PDF后,直接在写入模式下尝试提取文本。此时文档内容还未完全写入到PDF的页面结构中,内存中的内容没有被持久化,导致GetTextFromPage无法读取到有效内容。
修正后的代码
string pathPdf = "output.pdf"; // 第一步:创建并写入PDF PdfWriter writer = new PdfWriter(pathPdf); PdfDocument pdfDocWrite = new PdfDocument(writer); Document document = new Document(pdfDocWrite); for (int i = 1; i < 10; i++) { Paragraph header = new Paragraph("PDF Page " + i.ToString()); header.SetTextAlignment(TextAlignment.CENTER); header.SetFontSize(20); document.Add(header); document.Add(new AreaBreak(AreaBreakType.NEXT_PAGE)); } // 必须关闭写入端的文档,确保内容完全写入文件 document.Close(); pdfDocWrite.Close(); // 第二步:重新打开PDF,提取文本 PdfReader reader = new PdfReader(pathPdf); PdfDocument pdfDocRead = new PdfDocument(reader); PdfPage page = pdfDocRead.GetPage(1); string content = PdfTextExtractor.GetTextFromPage(page); Console.WriteLine(content); // 输出 "PDF Page 1" pdfDocRead.Close(); reader.Close();
关键说明
- 写入操作完成后,一定要关闭
Document和PdfDocument,让iText将内存中的内容完整写入到磁盘文件中。 - 提取文本时,必须通过
PdfReader以读取模式打开已保存的PDF文件,此时页面内容才是可读取的状态。
内容的提问来源于stack exchange,提问作者Paolo Rosso
相关产品推荐
相关产品推荐

