1、获取pdf页数
添加maven依赖:
<!-- java获取Pdf文件页码 -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>1.8.11</version>
</dependency>
代码实现:
/**
* 获取pdf页数
* @author lgn
* @date 2023/6/13 10:29
* @return int
*/
public static int getFilePage(String pdfName) throws IOException {
int page=0;
//pdfName:pdf文件路径
try {
PDDocument pdDocument = PDDocument.load(pdfName);
page=pdDocument.getNumberOfPages();
} catch (IOException e) {
e.printStackTrace();
}
return page;
}
public static void main(String[] args) throws Exception {
/* System.out.println("begin");
PDFReport ppt = new PDFReport();
String url = ppt.testWritePdf();
System.out.println(url);
System.out.println("end");*/
String url="C:\\Users\\Administrator\\Desktop\\新建 DOC 文档.pdf";
System.out.println(getFilePage(url));
}
2、获取pdf文字内容
maven依赖:
<!-- java 识别pdf -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.23</version>
</dependency>
接口实现:
/**
* 获取pdf文字内容
*/
@PostMapping("uploadPDF")
public R<SysFile> uploadPDF(MultipartFile multipartFile) {
try
{
//multipartFile为multipartFile文件类型,将文件转化为文件流被PDDocument加载
PDDocument document = PDDocument.load(multipartFile.getInputStream());
document.getClass();
//使用PDFTextStripper 工具
PDFTextStripper tStripper = new PDFTextStripper();
//设置文本排序,有规则输出
tStripper.setSortByPosition(true);
//获取所有文字信息
String info = tStripper.getText(document);
System.out.println(info);
return R.ok();
}
catch (Exception e)
{
log.error("上传文件失败", e);
return R.fail(e.getMessage());
}
}
3、Java 提取 PDF 文件中的图片
引入maven依赖:
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>3.9.0</version>
</dependency>
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
代码实现:
package com.ypk.swagger.utils.PDFUtils;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* 从 PDF 文档中提取图片
* @author lgn
* @date 2023/6/21 16:37
*/
public class PdfboxUtil {
public static void main(String[] args) throws IOException {
//创建 PdfDocument 类的对象
PdfDocument doc = new PdfDocument();
//载入PDF文档
doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\SY P-EM-02 A4 设备管理控制程序-.pdf");
//声明一个int变量
int index = 0;
//循环遍历所有页面
for (PdfPageBase page : (Iterable<PdfPageBase>) doc.getPages()) {
//从页面中提取图片
for (BufferedImage image : page.extractImages()) {
//指定文件路径和文件名
File output = new File("C:\\Users\\Administrator\\Desktop\\" + String.format("图片-%d.png", index++));
//将图片保存为PNG文件
ImageIO.write(image, "PNG", output);
}
}
}
}