pdf添加文本或者图片

        最近在工作中有一个有意思的需求,需要在一个pdf文档上添加一些文本,比如:在右上角添加上姓名,在右下角添加学号,班级。从文件系统上拿到pdf,当把pdf打印发送给学生时,需要加上这些东西。大家也都清楚,pdf转world,xml,svg都是需要花钱的,没错,我用的这个工具也是需要花钱的,但他们官网可以申请试用,有兴趣的可以去试一试。

我的例子用的是免费的jar包。

jar包链接:链接: https://pan.baidu.com/s/1CcK0AfW2xl9oTNJByor-Pw 提取码: rvra 复制这段内容后打开百度网盘手机App,操作更方便哦

官网:Free Spire.Doc for JAVA | 下载下载Java Word库用以阅读、创建、操作、转换以及打印MS Word文档。https://www.e-iceblue.cn/Downloads/Free-Spire-Doc-JAVA.html

1.原pdf

2.添加之后的,他还能直接添加图片,我给大家放了一张美图

 

 

 

 唉,看着简单,但是原理复杂。

代码我尽量用画画的方式解释了,不懂得再问我。

package com.sendy.boot.util;

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Point2D;

public class PDFAddText {

    public static void main(String[] args) {
        //创建PdfDocument类的对象,就是创建一个pdf对象
        PdfDocument pdf = new PdfDocument();
        //加载测试文档
        pdf.loadFromFile("C:\\Users\\Administrator\\Desktop\\test.pdf");
        //我这里是每一页都添加,pdf.getPages().get(i)通过这个方法可以修改我们想要的那一页
        for (int i = 0; i < pdf.getPages().getCount(); i++) {
            System.out.println(i);
            //调用insertTextAndImage()方法添加文本和图片
            insertTextAndImage(pdf.getPages().get(i), "2021-11-1","作者hzr");
        }

        //将添加文本和图片之后的文档保存到桌面,路径自己检查自己的
        pdf.saveToFile("C:\\Users\\Administrator\\Desktop\\textWaterMark.pdf");
    }

    public static void insertTextAndImage(PdfPageBase page, String s1,String s2) {


        //要写东西肯定需要笔
        //创建一个画笔,笔的颜色是黑色的
        PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.black));
        //你要写什么字体呢?
        //创建要使用的一个字体
        PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("宋体", Font.ROMAN_BASELINE, 16), true);
        //你的文本格式是怎么样的?
        //创建一个pdf文本格式
        PdfStringFormat format1 = new PdfStringFormat();
        //文本左对齐
        format1.setAlignment(PdfTextAlignment.Right);
        //你这些肯定要在pdf上进行添加,我们把我们的pdf想象成一个画布
        //getCanvas()这个就是我们的画布
        //drawString()我们开始作画
        //s1 添加的文本, font1 字体格式, brush1 我们用的有颜色的笔,new Point2D.Float()  要放在画布的那个位置, format1 对齐方式
        page.getCanvas().drawString(s1, font1, brush1,new Point2D.Float((float) page.getActualSize().getWidth()-5, 0),format1);

        PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(Color.black));

        PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("宋体", Font.PLAIN, 16), true);

        page.getCanvas().drawString(s2, font2, brush2,new Point2D.Float((float) page.getActualSize().getWidth()-5, (float) page.getActualSize().getHeight()-16),format1);

        //画个美女
        //找到一张美女的照片
        PdfImage image = PdfImage.fromFile("C:\\Users\\Administrator\\Desktop\\girl.jpg");
        //得到照片的宽度和高度
        int width = image.getWidth()/2;
        int height = image.getHeight()/2;

        //继续作画,把图片放进去,而且得放到具体的位置
        page.getCanvas().drawImage(image,20,350,width, height);

    }
}

这里有一个关键的地方,我用的是maven,但是他官网给的那个maven依赖下载不下来,所以我只能自己下载jar包添加进去了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值