【问题标题】:Get pdf file content in Itext在 Itext 中获取 pdf 文件内容
【发布时间】:2012-10-21 15:23:32
【问题描述】:

有没有一种方法可以将 pdf 文件(“example.pdf”)的内容放入 IText 对象中,例如 Paragraph 或 Chunk?

我需要使用正在生成的新 pdf 中的内容(以及其他文本)。

【问题讨论】:

  • 您说您需要使用正在生成的新 pdf 中的内容。您的使用动态如何?您是否重复使用完整的页面?或者你真的需要重排东西吗?在前一种情况下,请使用用于操作现有 PDF 的 PdfStamper。

标签: java itext


【解决方案1】:

不,至少不容易。

当iText将Chunks和Paragraphs以及所有此类对象放入PDF(或其他PDF创建程序各自的对象)时,“从这里到那里的单词组成一个段落”或“这些单词组成一个章节”的信息是一般丢失。相反,所有剩下的都是多个定位的字母组。 (好吧,可以有更多信息,但大多数情况下没有。)

不过,您可以做的是使用类解析 PDF 的内容,例如在 iText 解析器包中检索那些定位的字母组,并对它们应用一些启发式方法来猜测它们中的哪些构成段落、章节或其他。

【讨论】:

    【解决方案2】:

    它的 C# 代码,但也应该在 java 上工作。 Java 上的命名空间iTextSharp.text.pdf.parser; 看起来有点不同,但它必须是.parse

    Rectangle rect = new Rectangle(48.031496063f, 643.307086614f, 198.42519685f + 68.031496063f, 70.866141732f + 663.307086614f);
    RenderFilter f = new RegionTextRenderFilter(rect);
    List<RenderFilter> fi = new List<RenderFilter>();
    fi.Add(f); 
    ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), fi.ToArray()); 
    //on java it should be:  ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), f); 
    sw.WriteLine(PdfTextExtractor.GetTextFromPage(reader, 1, strategy));
    

    object rect 是您想要进行 OCR 的区域。所有文本都应放入 txt 文件中,与我在 pdf 上显示的非常相似。有关 iText 上 OCR 的更多信息,您应该查看 Bruno Lowagie 的“iText in action. 2nd edition”中的第 15.3 章。

    免责声明。我与布鲁诺无关,只是读他的书。它回答了我很多关于如何使用 iText(Sharp) 的问题。

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 1970-01-01
      • 2013-07-26
      • 2017-12-02
      • 2021-08-08
      • 2011-03-21
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多