在Itext中获取pdf文件内容

时间:2012-10-21 15:23:32

标签: java itext

有没有办法可以将pdf文件(“example.pdf”)的内容放入像Paragraph或Chunk这样的IText对象中?

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

2 个答案:

答案 0 :(得分:1)

不,至少不容易。

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

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

答案 1 :(得分:0)

它的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(夏普)的问题。