0
我想通过使用Apache POI(对于doc来将它们转换为单个字符串来阅读和处理.doc,.docx,.pdf文件,docx)和Apache PDFBox(用于pdf)库。
它工作正常,直到它遇到文本框。 如果格式是这样的:
段落1个
文本框1
第2段
文本框2
第3段
然后输出应为:
第1文本框1第2段文本框2第3段
但我得到的输出为:
第1款第2款第3款文本框1个文本框2
似乎在最后,而不是在这个地方要添加文本框的地方翔即,在段落之间。这个问题在doc和pdf文件的情况下都是如此。这意味着图书馆,POI和PDFBox都会带来同样的问题。
阅读PDF文件中的代码为:
在使用Apache POI和Apache PDF阅读器阅读文档,pdf文件中的错位文本框
void pdf(String file) throws IOException { //Initialise file File myFile = new File(file); PDDocument pdDoc = null; try { //Load PDF pdDoc = PDDocument.load(myFile); //Create extractor PDFTextStripper pdf = new PDFTextStripper(); //Extract text output = pdf.getText(pdDoc); } finally { if(pdDoc != null) //Close document pdDoc.close(); } }
并为doc文件的代码为:
void doc(String file) throws FileNotFoundException, IOException { File myFile = null; WordExtractor extractor = null ; //initialise file myFile = new File(file); //create file input stream FileInputStream fis=new FileInputStream(myFile.getAbsolutePath()); //open document HWPFDocument document=new HWPFDocument(fis); //create extractor extractor = new WordExtractor(document); //get text from document output = extractor.getText(); }
您可能会发现文本框被锚定到一个段落,并且您无意中移动/丢失锚点。如果您可以让iText向您提供有关文本框锚点的信息,那么也许您可以保留或重置它。 – 2012-07-30 04:28:31
你有直接使用底层库的原因吗?使用[Apache Tika](http://tika.apache.org)可能会简单得多,它包装库并生成一致的文本 – Gagravarr 2015-01-05 13:14:25