簡體   English   中英

iText閱讀多語言PDF文檔

[英]iText reading multicolumned PDF document

閱讀多語言PDF文檔

當iText讀取PDF(將頁面內容提取為字符串變量)時,內容將通過以下方式修復:

reader = new PdfReader(getResources().openRawResource(R.raw.resume1));
original_content = PdfTextExtractor.getTextFromPage(reader, 2);
String sub_content = original_content.trim().replaceAll(" {2,}", " ");
sub_content = sub_content.trim().replaceAll("\n ", "\n");
sub_content = sub_content.replaceAll("(.+)(?<!\\.)\n(?!\\W)", "$1 "); 

如果文檔只有1列,但如果文檔有多列,則每行提取文檔1。 它會結合左右列。

我使用作為示例PDF來自START QA文檔。

如何閱讀多重PDF文檔?

這個問題有兩種不同的方法,使用的選擇取決於PDF本身。

  1. 如果問題中PDF的頁面內容中的字符串已按所需順序排列:您使用的PdfTextExtractor.getTextFromPage重載隱式使用的LocationTextExtractionStrategy ,請顯式使用SimpleTextExtractionStrategy ; 在你的情況下:

     original_content = PdfTextExtractor.getTextFromPage(reader, 2, new SimpleTextExtractionStrategy()); 
  2. 如果所討論的PDF的頁面內容中的字符串不是所需的順序:您使用的PdfTextExtractor.getTextFromPage的重載隱式使用的LocationTextExtractionStrategy ,在FilteredTextRenderListener顯式地包裝一個這樣的策略,限制它接收文本僅一列的區域; 在你的情況下:

     Rectangle left = new Rectangle(0, 0, 306, 792); Rectangle right = new Rectangle(306, 0, 612, 792); RenderFilter leftFilter = new RegionTextRenderFilter(left); RenderFilter rightFilter = new RegionTextRenderFilter(right); [...] TextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), leftFilter); original_content = PdfTextExtractor.getTextFromPage(reader, 2, strategy); originalContent += " "; strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), rightFilter); original_content += PdfTextExtractor.getTextFromPage(reader, 2, strategy); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM