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

如何使用iText 7(8.0)在C#中检测PDF文件中的指定字符串

在C#中使用iText提取PDF文本的示例代码

我正在进行PDF库的基础基准测试(生成、拆分、合并、读取、压缩),用于选择项目中的C# PDF库。需求是从可直接提取文本的生成式发票PDF(无需OCR)中提取文本,并检测是否包含指定字符串。

使用Dynamic PDF时,实现很简洁:

PdfDocument inputDocument = new PdfDocument(RessourcesBenchmark.PDF_MERGE_PAGE_TO_APPEND_PATH);
var text = inputDocument.GetText();

问题

请问如何在C#中使用iText实现相同的文本提取功能?iText的文档结构比较特殊,要么需要通读全部API,要么参考官网的电子书或示例,但这些示例往往针对性过强。我找了相关资料但花费2小时仍未解决,需要示例代码或代码片段参考。完成基准测试后,我会把代码发布到GitHub,因为这类库的文档通常不够直观。


iText 7 实现方案

iText 7中需要结合PdfReader、PdfDocument和文本提取策略来实现,以下是可直接复用的代码片段:

using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
using System.Text;

public static string ExtractFullPdfText(string pdfFilePath)
{
    // 初始化读取器和文档对象,using确保资源自动释放
    using (PdfReader pdfReader = new PdfReader(pdfFilePath))
    using (PdfDocument pdfDocument = new PdfDocument(pdfReader))
    {
        StringBuilder extractedText = new StringBuilder();
        
        // 遍历PDF的所有页面
        for (int pageNumber = 1; pageNumber <= pdfDocument.GetNumberOfPages(); pageNumber++)
        {
            // 使用LocationTextExtractionStrategy按视觉顺序提取文本,适合规整的发票文档
            ITextExtractionStrategy extractionStrategy = new LocationTextExtractionStrategy();
            string pageText = PdfTextExtractor.GetTextFromPage(pdfDocument.GetPage(pageNumber), extractionStrategy);
            
            extractedText.Append(pageText);
        }
        
        return extractedText.ToString();
    }
}

// 调用示例:提取文本并检测指定字符串
string pdfContent = ExtractFullPdfText(RessourcesBenchmark.PDF_MERGE_PAGE_TO_APPEND_PATH);
bool hasTargetString = pdfContent.Contains("你的目标检测字符串");

关键说明

  • 提取策略选择:LocationTextExtractionStrategy会按照文本在页面上的视觉布局顺序提取,适合生成式发票这类排版规范的文档;如果需要按PDF内部的原始文本存储顺序提取,可以替换为SimpleTextExtractionStrategy
  • 依赖安装:确保已通过NuGet安装iText 7的核心包(如itext.kernel、itext.pdfa等,根据项目需求选择)

内容的提问来源于stack exchange,提问作者aurelienjo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:52:30