有没有办法可以将 pdf 文件(“example.pdf”)的内容转换为 IText 对象,如 Paragraph 或 Chunk?
我需要在我正在生成的新 pdf 中使用内容(以及其他文本)。
不,至少不容易。
当iText将Chunks和Paragraphs以及所有此类对象放入PDF(或其他PDF创建程序各自的对象)时,“从这里到那里的单词形成一个段落”或“这些单词形成一个章节”的信息通常会丢失。相反,所有剩下的都是多个定位的字母组。(好吧,可以有更多信息,但大多数情况下没有。)
但是,您可以做的是使用例如 iText 解析器包中的类来解析 PDF 的内容,以检索那些定位的字母组并对它们应用一些启发式方法来猜测它们中的哪些构成段落、章节或其他.
它的 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));
对象rect
是您想要进行 OCR 的区域。所有文本都应放入 txt 文件中,与我在 pdf 上显示的非常相似。有关 iText 上 OCR 的更多信息,您应该查看 Bruno Lowagie 的“iText in action. 2nd edition”中的第 15.3 章。
免责声明。我与布鲁诺无关,只是读他的书。它回答了我很多关于如何使用 iText(Sharp) 的问题。