我正在尝试读取和处理Java中的.doc、.docx、.pdf文件,方法是使用Apache POI(用于doc、docx)和Apache PDFBox(用于pdf)库将它们转换为单个字符串。
在遇到文本框之前,它工作得很好。如果格式是这样的:
第1段
文本框1
第2段
文本框2
第3段
那么输出应该是:
第1段文本框1第2段文本框2第3段
但我得到的输出是:
第1段文本框1文本框2
似乎是在结尾处而不是应该在的地方(即段落之间)添加文本框。这个问题在doc和pdf文件的情况下都存在。这意味着库、POI和PDFBox都存在相同的问题。
读取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(); } }
单据档案编码为:
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(); }
对于PDFBox,执行以下操作:pdf.setSortByPosition(true);
背景 我一直在开发一个程序,它可以获取一个pdf,突出显示一些单词(通过pdfbox标记注释)并保存新的pdf。 为此,我扩展了PDFTextStripper类,以覆盖writeString()方法并获取每个单词(框)的TextPositions,这样我就可以准确地知道文本在PDF文档中的坐标位置(TextPosition对象为我提供每个单词框的坐标)。然后,在此基础上,我画了一个矩形,突出显示我
问题内容: 我有一个zip存档,其中包含一堆纯文本文件。我想解析每个文本文件的数据。到目前为止,这是我写的内容: 我需要一个RandomAccessFile来做到这一点吗?我在拥有ZipInputStream的地方迷路了。 问题答案: 不,您不需要。首先获取此zip文件条目的数据: 然后将其包装为(从二进制解码为文本)和a (一次读取一行): 然后像往常一样从中读取行。像往常一样将所有适当的位包装
问题内容: 我如何阅读像android app中的文本文件: 所以我可以返回一个字符串,如: 我想到的是(伪代码): 问题答案: 试试这个
问题内容: 我在使用BufferedReader时遇到问题 我想打印一个文本文件的6行: 现在,从每次调用readLine()方法可以收集到的信息开始,它都会自动前进到下一行。 所以我不能使用条件br.readLine()!= null,因为它已经将其前进了一行,并且我得到了输出: 我使用什么条件来检查文本字段中是否还有新行。 提前致谢! 问题答案: 这就是问题: 您有两次调用-第一个 仅 检查是
问题内容: 我需要在终端中传递一个文本文件,然后从中读取数据,我该怎么办? 如何从终端进入路径,如何在另一侧阅读? 问题答案: 您将要使用数组访问命令行参数以获取文件名,并使用FileSystem模块(fs)来读取文件。例如: 为了稍微分解一下,通常长度为2,第零个为“节点”解释器,第一个为节点当前正在运行的脚本,其后的项目在命令行中传递。从argv中提取文件名后,就可以使用文件系统函数读取文件并
我想打印一个文本文件的6行: 现在,根据我每次调用readLine()方法时所收集到的信息,它会自动前进到下一行。 所以我不能使用条件br.readline()!=null,因为它已经提前了一行,我得到的输出是: 我使用什么条件来检查文本字段中是否还有新行。 提前道谢!