Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Itext中获取pdf文件内容_Java_Itext - Fatal编程技术网

Java 在Itext中获取pdf文件内容

Java 在Itext中获取pdf文件内容,java,itext,Java,Itext,有没有一种方法可以将pdf文件(“example.pdf”)的内容放入像段落或区块这样的IText对象中 我需要使用我正在生成的新pdf中的内容(以及其他文本)。不,至少不容易 当iText将块和段落以及所有此类对象放入PDF(或其他PDF创建程序及其各自的对象)时,“从这里到那里的单词形成段落”或“这些单词形成章节”的信息通常会丢失。取而代之的是多个定位字母组。(好的,可以提供更多信息,但大多数情况下没有。) 不过,您可以做的是使用类(例如iText解析器包中的类)解析PDF的内容,以检索那些

有没有一种方法可以将pdf文件(“example.pdf”)的内容放入像段落或区块这样的IText对象中


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

不,至少不容易

当iText将块和段落以及所有此类对象放入PDF(或其他PDF创建程序及其各自的对象)时,“从这里到那里的单词形成段落”或“这些单词形成章节”的信息通常会丢失。取而代之的是多个定位字母组。(好的,可以提供更多信息,但大多数情况下没有。)

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

其C代码,但也应该适用于java。 名称空间
iTextSharp.text.pdf.parser在java上它看起来有点不同,但它必须是
。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));
Rectangle rect=新矩形(48.03149063f、643.307086614f、198.42519685f+68.03149663f、70.866141732f+663.30708664f);
RenderFilter f=新区域ExtranderFilter(rect);
List fi=新列表();
fi.加入(f);
iTextractionStrategy策略=新的FilteredTextEnderListener(新位置TextExtractionStrategy(),fi.ToArray());
//在java上,它应该是:itextractionstrategy strategy=newfilteredtextrenderlistener(newlocationtextextractionstrategy(),f);
sw.WriteLine(PdfTextExtractor.GetTextFromPage(reader,1,strategy));
对象
rect
是要进行OCR的区域。所有文本都应该放在txt文件中,非常类似于我在pdf中显示的文本。有关iText上OCR的更多信息,请参阅Bruno Lowagie编写的“iText正在运行。第二版”中的第15.3章


免责声明。我和布鲁诺没什么关系,只是在读他的书。它回答了我关于如何使用iText(Sharp)的许多问题。

你说你需要使用正在生成的新pdf中的内容。您的使用动态如何?您是否重复使用完整的页面?还是你真的需要重新焊接?在前一种情况下,使用PdfStamper来操纵现有的PDF。