我使用iTextSharp编写了一个提取工具,从PDF文档中提取注释信息.对于高亮注释,我只获得页面上突出显示的区域的矩形.
我的目标是提取已突出显示的文本.为此,我使用`PdfTextExtractor'.
Rectangle rect = new Rectangle(
pdfArray.GetAsNumber(0).FloatValue,
pdfArray.GetAsNumber(1).FloatValue,
pdfArray.GetAsNumber(2).FloatValue,
pdfArray.GetAsNumber(3).FloatValue);
RenderFilter[] filter = { new RegionTextRenderFilter(rect) };
ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
string textInsideRect = PdfTextExtractor.GetTextFromPage(pdfReader, pageNo, strategy);
return textInsideRect;
Run Code Online (Sandbox Code Playgroud)
返回的结果PdfTextExtractor
并不完全正确.例如,它返回"即将消除纸张追逐",即使只突出显示"消除".
有趣的是,包含突出显示的"消除"的TJ的整个文本是"将要消除纸张追逐"(TJ是将文本写入页面的PDF指令).
我很想听到有关此问题的任何意见 - 也包括不涉及iTextSharp的解决方案.