我现在有一些pdf文件,该如何不通过手动打开,通过程序来获取在pdf中Ctrl+A全选时选中的内容呢?
尝试过使用PyPDF2、pdfminer、pdftotext来解析pdf,虽然能够读取出pdf的文本内容到txt中,但是解析出来的文本顺序是没有规律的,这样就无法对这些文本进行解析了。但是对pdf进行全选——复制——粘贴得到的文本都是有规律的,请问该如何解决呢?
谢谢
我现在有一些pdf文件,该如何不通过手动打开,通过程序来获取在pdf中Ctrl+A全选时选中的内容呢?
尝试过使用PyPDF2、pdfminer、pdftotext来解析pdf,虽然能够读取出pdf的文本内容到txt中,但是解析出来的文本顺序是没有规律的,这样就无法对这些文本进行解析了。但是对pdf进行全选——复制——粘贴得到的文本都是有规律的,请问该如何解决呢?
谢谢
可以试用下Free Spire.PDF for Java免费控件,在后台通过运行Java代码来提取PDF文档中的文本。提取出来的文本有规律,不会出现乱码,错行之类的情况。以下是相关代码示例,也可参考官网教程。
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import java.io.*;
public class Extract_Text {
public static void main(String[] args) {
//创建PdfDocument实例
PdfDocument doc = new PdfDocument();
//加载PDF文件
doc.loadFromFile("test.pdf");
//创建StringBuilder实例
StringBuilder sb = new StringBuilder();
PdfPageBase page;
//遍历PDF页面,获取每个页面的文本并添加到StringBuilder对象
for(int i= 0;i<doc.getPages().getCount();i++){
page = doc.getPages().get(i);
sb.append(page.extractText(true));
}
FileWriter writer;
try {
//将StringBuilder对象中的文本写入到文本文件
writer = new FileWriter("ExtractText.txt");
writer.write(sb.toString());
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
doc.close();
}
}
2 回答1.3k 阅读
631 阅读
2 回答590 阅读
你说的没有规律是没对齐的意思吧,或者换行错误的问题。从描述上感觉是没有正确解析空格和换行符造成的。