You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:37:04