2014-06-15 60 views
0

我無法閱讀帶有頁眉和頁腳的PDF,但在您的身體中有2列。iTextSharp - 用2列閱讀PDF

我已經有列的寬度和高度的標題,但我需要的代碼來閱讀列的頁面。

任何人都可以提供一段代碼來讀取PDF列嗎?

謝謝

回答

1

這是很難達到你想要什麼,如果你不知道列的位置,但我認爲你有它的座標,因爲你說「我已經有列的寬度和高度」。在這種情況下,你的問題是不是從張貼在StackOverflow上這個的其他問題不同:iTextSharp read from specific position

假設rect是一個列的位置相對應的Rectangle,那麼你就需要這樣的代碼:

RenderFilter[] filter = {new RegionTextRenderFilter(rect)}; 
ITextExtractionStrategy strategy = new FilteredTextRenderListener(
    new LocationTextExtractionStrategy(), filter); 
String single_column = PdfTextExtractor.GetTextFromPage(reader, i, strategy)); 

現在,您只有一列中的文字。您需要爲網頁上的每一列重複此操作。

額外的評論:雖然使用RegionTextRenderFilter大多數情況下會工作得很好,少數病例(其中列通過簡單地插入的行額外的空格字符創建)可能需要分割文本塊來處理提前。這可以通過例如通過使用來自this answerTextRenderInfoSplitter並將FilteredTextRenderListener包裝在其中。

+1

雖然在大多數情況下使用'RegionTextRenderFilter'可以很好地工作,但少數情況下(通過在行中插入額外的空格字符來創建列)可能需要將文本塊提前處理。這可以通過例如通過使用[本答案](http://stackoverflow.com/questions/21000256/pdf-reading-highlighed-text-highlight-annotations-using-c-sharp/21023311#21023311)中的'TextRenderInfoSplitter'幷包裝' FilteredTextRenderListener'在裏面。 – mkl

+0

好評,mkl,我會將您的評論添加到答案中。 –

+0

感謝Bruno, 但是這種策略正在改變\ n的雙打\ n文本。 而且我需要在SimpleTextExtractionStrategy()中完成的\ n的兩倍\ n 您知道如何使用矩形而不會丟失雙精度\ n嗎? –