gitee代码
参考博客
pdfBox操作pdf
使用 Apache PDFBox 在 Java 中为 PDF 文档创建书签
功能实现
实现思路
-
通过正则表达式匹配标题
-
通过标题和页面添加书签(只能定位到标题所在页)
实现效果

pdfbox给pdf添加书签
java操作PDF,有一个很好用的工具——pdfbox。只需要引入依赖,即可使用。
<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app</artifactId> <version>2.0.21</version> </dependency>
利用这个工具,可以实现很多的功能,我这里示例了以下几种:
-
加载PDF文档
-
创建一个单页的PDF空文档
-
获取PDF文档总页数
-
获取pdf文档的所有分页对象
-
给整个PDF文件分页,形成多个pdf单页文件
-
合并多个单页PDF文件,输出一个合并后的PDF文档
-
图片转PDF
-
获取pdf单页分辨率
代码如下:
package com.bridge.pdf.utils;
import com.bridge.enums.UtilsEnums;
import com.bridge.pdf.model.PdfBoxData;
import lombok.extern.slf4j.Slf4j;
import org.apache.pdfbox.multipdf.PDFMergerUtility;
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageDestination;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageFitWidthDestination;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;
import org.apache.pdfbox.text.PDFTextStripper;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @author bridge
* @Date 2022/05/08/18:14
*/
@Slf4j
public class PDFBoxUtils {
public static void main(String[] args) throws IOException {
String savePath = "C:\\Users\\Administrator\\Desktop\\tmp\\pdf\\添加书签-" + System.currentTimeMillis() + ".pdf";
File file = new File("C:\\Users\\Administrator\\Desktop\\tmp\\k8s尚硅谷\\03_尚硅谷大数据技术之实时项目-需求一日活.pdf");



被折叠的 条评论
为什么被折叠?



