2017-01-01 161 views
1

我需要提取并阅读使用C#的PDF注释。提取PDF注释

我可以通过使用PDFBox和itextsharp提取文件没有任何问题,但我需要阅读注释文本或下划线或彩色(突出显示的行)。

有什么想法?

+0

为PDFBox的答案是相同的重新PDF内部。当然代码是不同的。要从注释区域提取,请参阅源代码下载中的PrintURL示例。 –

+0

@TilmanHausherr您是否拥有PrintURL的C#代码? – Ahmad

+0

不,只有java。但是C#和java非常相似。 –

回答

1

您需要了解页面的实际内容(使用页面的内容流中的PDF语法进行描述的内容)与添加到页面的注释之间存在差异(在页面词典的/Annots条目的注释词典中描述的内容)。

到目前为止,您正在提取注释词典的内容,但是您还希望使用注释的/Rect条目从内容流中提取其位置已标识的内容。你需要解析页面的内容流来做到这一点。

请到official iText web site和阅读常见问题解答,更具体:How to read text from a specific position?

假设reader是你PdfReader例如,rectRectangle定义要提取文本的位置,并page相应的页面数,那么你可以创建一个RenderFilter并使用LocationTextExtractionStrategy这样的:

RenderFilter[] filter = {new RegionTextRenderFilter(rect)}; 
ITextExtractionStrategy strategy = 
    new FilteredTextRenderListener(
     new LocationTextExtractionStrategy(), filter); 
String text = PdfTextExtractor.GetTextFromPage(reader, page, strategy)); 
+0

对于某些注释种类,** QuadPoints **比** Rect **更简洁。在标记注释的情况下,** AP **外观流可能仍然标记文本的不同子集。但没有人会想要尝试,并通过这些外观来确定文本范围... – mkl

+0

@Bruno Lowagie我只需要得到高亮显示的PDF文件中的句子,通过注释添加 – Ahmad