文章目录
🐒个人主页:信计2102罗铠威
🏅JavaEE系列专栏
📖前言:
PDF转文本的插件常用的有:pdfbox ,itextpdf 和 spire.pdf 这几个,
spire.pdf这个转图片不推荐使用(图片不完整要收费),推荐使用我发布itextpdf 这篇文章的转图片方式
pdfbox_6">🎀 1. pdfbox
pdfbox_maven_7">1.1导入pdfbox 的maven依赖
spire官网入口(不谢~)
<dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf</artifactId><version>10.7.3</version></dependency>
因为这个是私服仓库,可能有的小伙伴下不下来依赖:在maven的配置文件中配置这个仓库即可:
看不懂的点这里~
<repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository>
</repositories>
1.1 提取文本
java">import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.texts.PdfTextExtractOptions;
import com.spire.pdf.texts.PdfTextExtractor;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;public class ExtractTextFromPage
{public static void main(String[] args) throws IOException{// 创建 PdfDocument 对象PdfDocument doc = new PdfDocument();// 加载 PDF 文件doc.loadFromFile("input.pdf");// 获取第一页,遍历文档所有页便可提取文档所有文本内容PdfPageBase page = doc.getPages().get(0);// 创建PdfTextExtractor 对象PdfTextExtractor textExtractor = new PdfTextExtractor(page);// 创建PdfTextExtractOptions 对象PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();// 从页面中提取文本String text = textExtractor.extract(extractOptions);// 写入到 txt 文件中Files.write(Paths.get("Extracted.txt"), text.getBytes());// 释放PdfDocument对象doc.dispose();}
}
1.2 提取文本表格(可自行加入逻辑处理)
java">import com.spire.pdf.*;
import com.spire.pdf.utilities.PdfTable;
import com.spire.pdf.utilities.PdfTableExtractor;import java.io.FileWriter;
import java.io.IOException;public class ExtractTable {public static void main(String[] args)throws IOException {//实例化PdfDocument类的对象PdfDocument pdf = new PdfDocument();//加载PDF文档pdf.loadFromFile("test.pdf");//创建StringBuilder类的实例StringBuilder builder = new StringBuilder();//创建PdfTableExtractor类的对象PdfTableExtractor extractor = new PdfTableExtractor(pdf);//遍历每一页for (int page = 0; page < pdf.getPages().getCount(); page++){//提取页面中的表格存入PdfTable[]数组PdfTable[] tableLists = extractor.extractTable(page);if (tableLists != null && tableLists.length > 0){//遍历表格for (PdfTable table : tableLists){int row = table.getRowCount();//获取表格行int column = table.getColumnCount();//获取表格列for (int i = 0; i < row; i++){for (int j = 0; j < column; j++){//todo 获取表格中的文本内容 表格坐标(i,j)String text = table.getText(i, j);//将获取的text写入StringBuilder容器builder.append(text+" ");}builder.append("\r\n");}}}}//保存为txt文档FileWriter fileWriter = new FileWriter("ExtractedTable.txt");fileWriter.write(builder.toString());fileWriter.flush();fileWriter.close();}
}
pdf_131">1.3 pdf转换成图片代码(不推荐)
可以看我发布itextpdf 这篇文章的转图片方式,它这个功能不完整
java">import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImageType;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class PDFtoImage {public static void main(String[] args)throws IOException {//实例化PdfDocument类的对象PdfDocument pdf = new PdfDocument();//加载PDF文档pdf.loadFromFile("sample.pdf");//遍历PDF每一页,保存为图片for (int i = 0; i < pdf.getPages().getCount(); i++) {//将页面保存为图片,并设置DPI分辨率BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap,500,500);//将图片保存为png格式File file = new File( String.format(("ToImage-img-%d.png"), i));ImageIO.write(image, "PNG", file);}pdf.close();}
}