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

使用iText7 8.0.4提取PDF文本抛出异常,求解决方法

解决iText7提取PDF文本时的“'>' not expected”异常

问题原因

该异常说明目标PDF文件存在语法不规范或局部损坏,iText的PDF解析器在文件指针39747位置遇到了不符合PDF规范的'>'符号,导致解析中断。

解决方案

1. 启用iText的PDF修复模式

初始化PdfReader时通过ReaderProperties开启自动修复选项,让iText尝试修正PDF中的格式问题:

MemoryStream pdfStream = ...
pdfStream.Position = 0;

// 配置修复属性
var readerProps = new ReaderProperties()
    .SetUnethicalReading(true)
    .SetFixBrokenPdf(true);
var reader = new PdfReader(pdfStream, readerProps);

using var pdfDocument = new PdfDocument(reader);
var strategy = new LocationTextExtractionStrategy();

for (int i = 1; i <= pdfDocument.GetNumberOfPages(); ++i)
{
    var page = pdfDocument.GetPage(i);
    var text = PdfTextExtractor.GetTextFromPage(page, strategy);
    // 处理提取到的文本
}
  • SetUnethicalReading(true):绕过部分PDF的权限限制标记(部分损坏PDF会误触发该标记)
  • SetFixBrokenPdf(true):开启iText的自动修复损坏PDF功能

2. 切换文本提取策略

如果修复模式无效,尝试使用逻辑更简单的SimpleTextExtractionStrategy,对不规范PDF兼容性更好:

var strategy = new SimpleTextExtractionStrategy();
var text = PdfTextExtractor.GetTextFromPage(page, strategy);

3. 提前修复PDF文件

若上述方法仍失败,先用第三方工具(如Ghostscript)预修复PDF,再用iText提取。示例Ghostscript命令:

gs -o repaired.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/original 目标文件.pdf

修复后使用原代码读取repaired.pdf即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:15:01