Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))

pom.xml引入

<!-- pdf文档生成 -->
        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-local</artifactId>
            <version>1.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-transformer-msoffice-word</artifactId>
            <version>1.0.3</version>
        </dependency>

        <!-- itext对pdf文档操作 -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.11</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

创建PDF操作工具类PdfUtils

package com.ruoyi.common.utils.pdf;

import com.itextpdf.text.*;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.*;
import java.util.List;

public class PdfUtils {

    /**
     * pdf加密
     *
     * @param filePath  输入文件路径
     * @param savePath  输出文件路径
     * @param password  密码
     * @return
     */
    public static boolean pdfEncrypt(String filePath, String savePath, String password){
        try{
            PdfReader reader = new PdfReader(filePath);
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(savePath));

            //ALLOW_PRINTING	文档允许打印
            //ALLOW_DEGRADED_PRINTING	允许用户打印文档,但不提供allow_printing质量(128位加密)
            //ALLOW_MODIFY_CONTENTS	允许用户修改内容,例如 更改页面内容,或插入或删除页
            //ALLOW_ASSEMBLY	允许用户插入、删除和旋转页面和添加书签。页面的内容不能更改,除非也授予allow_modify_contents权限,(128位加密)
            //ALLOW_COPY	允许用户复制或以其他方式从文档中提取文本和图形,包括使用辅助技术。例如屏幕阅读器或其他可访问设备
            //ALLOW_SCREENREADERS	允许用户提取文本和图形以供易访问性设备使用,(128位加密)
            //ALLOW_MODIFY_ANNOTATIONS	允许用户添加或修改文本注释和交互式表单字段
            //ALLOW_FILL_IN	允许用户填写表单字段,(128位加密)

            //访问者密码,拥有者密码(权限密码让pdf文件无法被修改),访问者权限,加密方式。
            stamper.setEncryption(null, password.getBytes(),PdfWriter.ALLOW_COPY|PdfWriter.ALLOW_DEGRADED_PRINTING,PdfWriter.STANDARD_ENCRYPTION_128);
            stamper.close();
            reader.close();
            return true;
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }
    }

    /**
     * pdf添加水印
     *
     * @param inputFile     需要添加水印的文件
     * @param outputFile    添加完水印的文件存放路径
     * @param waterMarkName 需要添加的水印文字
     * @param opacity       水印字体透明度
     * @param fontsize      水印字体大小
     * @param angle         水印倾斜角度(0-360)
     * @param heightdensity 数值越大每页竖向水印越少
     * @param widthdensity  数值越大每页横向水印越少
     * @param cover         是否覆盖
     * @return
     */
    public static boolean addwaterMark(String inputFile, String outputFile, String waterMarkName,
                                       float opacity, int fontsize, int angle, int heightdensity, int widthdensity, boolean cover) {
        if (!cover) {
            File file = new File(outputFile);
            if (file.exists()) {
                return true;
            }
        }
        File file = new File(inputFile);
        if (!file.exists()) {
            return false;
        }

        PdfReader reader = null;
        PdfStamper stamper = 
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值