2017-01-01 166 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