使用 Java 在 pdf 中添加文字和图片

  1. PdfAddUtil

需要添加如下依赖:

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

PdfAddUtil

package com.shar.pdf;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import lombok.Data;

import java.io.FileOutputStream;

public class PdfAddUtil {

    @Data
    public static class PdfText {
        String text;
        int fontSize;
        BaseColor color;
        BaseFont font;
    }

    public static boolean addText(String sourcePdfFilePath, String targetPdfFilePath, PdfText pdfText, float[] position) throws Exception {
        PdfReader pdfReader = new PdfReader(sourcePdfFilePath);
        PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(targetPdfFilePath));
        PdfContentByte content = pdfStamper.getUnderContent((int) position[0]);
        content.beginText();
        // 默认宋体
        BaseFont baseFont = pdfText.getFont()==null?BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED):pdfText.getFont();
        content.setFontAndSize(baseFont,pdfText.getFontSize());
        // 默认黑色字
        BaseColor coler = pdfText.getColor()==null?new BaseColor(0, 0, 0):pdfText.getColor();
        content.setColorFill(coler);
        content.setTextMatrix(position[1], position[2]); //设置文字在页面中的坐标
        content.showText(pdfText.getText());
        content.endText();
        pdfStamper.close();
        return true;
    }

    public static boolean addImage(String sourcePdfFilePath, String targetPdfFilePath, String imageFilePath, int width, int height,  float[] position) throws Exception {
        PdfReader pdfReader = new PdfReader(sourcePdfFilePath);
        PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(targetPdfFilePath));
        Image image = Image.getInstance(imageFilePath);
        image.scaleAbsolute(width, height);
        image.setAbsolutePosition(position[1], position[2]);
        PdfContentByte content = pdfStamper.getUnderContent((int) position[0]);
        content.addImage(image);
        pdfStamper.close();
        return true;
    }

}

转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:使用 Java 在 pdf 中添加文字和图片

字数:366

本文作者:夏来风

发布时间:2021-04-28, 23:45:21

原始链接:http://www.demo1024.com/blog/java-pdf-add-text-or-image/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。