java利用apache pdfbox工具裁剪PDF文件

本文介绍如何使用Apache PDFBox库在Java中裁剪PDF文件,包括导入依赖、创建工具类和执行裁剪操作。通过示例展示了具体步骤和关键代码段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java利用apache pdfbox工具裁剪PDF文件

一、导入apache pdfbox工具jar包

maven仓库导入工具包

<dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox</artifactId>
      <version>2.0.25</version>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>fontbox</artifactId>
      <version>2.0.25</version>
    </dependency>

二、裁剪pdf工具类

package com.mhx.info.service.util;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.junit.Test;

import java.io.File;

/**
 * @Description: pdf文件裁剪工具类
 * @BelongsProject: mhx
 * @BelongsPackage: com.mhx.info.service.util
 * @ClassName: PdfBoxChangUtilTest
 * @Author: MHX
 * @CreateTime: 2022/11/25
 */
public class PdfBoxChangUtilTest {

    /**
     * pdf格式改变
     *
     * @throws Exception 异常
     */
    @Test
    public void pdfToChange() throws Exception {
        String sourceFilePath = "D:/zhxcmfs";
        String sourceFileName = "证明.pdf";
        PDDocument outdoc = new PDDocument();
        PDDocument doc = PDDocument.load(new File(sourceFilePath + "/" + sourceFileName));
        //获取PDF第一页
        PDPage page = doc.getDocumentCatalog().getPages().get(0);
        PDRectangle artBox = page.getArtBox();
        //切割PDF的左部坐标,只需要X坐标
        artBox.setUpperRightX(312.0F);
        //切割PDF的上右部坐标,只需要X坐标
        artBox.setLowerLeftX(839.0F);
//        切割pdf的左下角坐标,只需Y坐标
        artBox.setLowerLeftY(50F);
        //        切割pdf的右上角坐标,只需Y坐标
        artBox.setUpperRightY(500F);
        page.setArtBox(artBox);
        outdoc.importPage(page);
        //希望切割后的PDF存储的位置
        String savePath = "D:\\zhxcmfs\\myFiles";
        String fileName = "裁剪后的证明.pdf";
//        该文件如果存在不创建,不存在则创建
        File destDir = new File(savePath + "/" + fileName);
        if (!destDir.exists()) {
            destDir.mkdir();
        }
        //保存输出切割后的PDF
        outdoc.save(savePath + "/" + fileName);
        outdoc.close();
        doc.close();
    }
}

当你使用PDFBox库对PDF文件进行裁剪(也称为“切割”或“修剪”操作)时,PDFBox的`PDFBox`类提供了`trim()`或`cropBox()`方法来设置一个新的裁剪区域。然而,原始内容并不会被删除,只是视觉上被裁减了。如果需要真正移除裁剪区域外的内容,你需要采取以下步骤: 1. **获取当前页面内容**: 使用`PDFPageContentStream`类从页面中读取内容流。 2. **创建新的PDF文档**: 创建一个新的`PDActionTrim`动作,指定新裁剪区域,并将其附加到新的PDF文档。 3. **裁剪并保存内容**: 使用`PDFPageContentStream`将已裁剪的内容流复制到新文档的相应位置。 4. **清除原始页面**: 可选地,你可以选择保留裁剪后的页面,然后删除原始的裁剪区域部分。这通常不会改变文件大小,因为PDF默认会压缩空的空间。 5. **合并裁剪后的页面到新文档**: 将处理过的页面添加到新文档中。 示例代码片段可能如下所示: ```java import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.interactive.action.PDActionTrim; import org.apache.pdfbox.pdmodel.interactive.annotation.PDRectangle; import org.apache.pdfbox.pdmodel.page.PDPage; // ... (已打开和加载PDF文档) // 获取当前页面 PDPage page = document.getPage(0); PDDocument newDocument = new PDDocument(); // 设置裁剪区域 PDRectangle cropBox = new PDRectangle(x, y, width, height); PDActionTrim trimAction = new PDActionTrim(); trimAction.setBoundingBox(cropBox); // 创建内容流并复制到新文档 try (PDFPageContentStream contentStream = new PDFPageContentStream(newDocument, page)) { contentStream.copyPage(page); // 这里可以进一步修改或筛选内容 } // 清理原始页面 page.trim(trimAction); document.close(); // 关闭原文档 // 合并裁剪后的页面到新文档 newDocument.addPage(page); newDocument.save("cropped_pdf.pdf"); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值