Java在pdf文件中加入文字或图片

2023-01-02 00:00:00 文件 图片 文字

**

pom

导入itextpdf** 依赖

<!-- itextpdf -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.4.3</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

**

工具类

**
传入流返回流,因为在公司项目中用流做操作
xy坐标取文本左上角的点
注释调的内容为本地文件测试代码

import com.itextpdf.text.Element;
import com.itextpdf.text.pdf.*;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;


public class UpdatePdfUtil {

    /**
     *
     * @param inputPDFFile 文件流
     * @param contentText  添加的文字
     * @param page         添加的第几页
     * @param x            添加位置x坐标
     * @param y            添加位置y坐标
     * @return
     * @throws Exception
     */
    public static InputStream addText(InputStream inputPDFFile, String contentText,Integer page,Integer x,Integer y)
            throws Exception {
        PdfReader reader = new PdfReader(inputPDFFile);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        PdfStamper stamper = new PdfStamper(reader,byteArrayOutputStream );
        int total = reader.getNumberOfPages() + 1;
        PdfContentByte content;
        BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
        PdfGState gs = new PdfGState();

        //content = stamper.getOverContent(i);// 在内容上方加水印
        content = stamper.getUnderContent(page);//在内容下方加水印
        gs.setFillOpacity(0.2f);
        content.beginText();

        //字体大小
        content.setFontAndSize(base, 9);
        //content.setTextMatrix(70, 200);
        //内容居中,横纵坐标,偏移量
        content.showTextAligned(Element.ALIGN_CENTER, contentText, x,  y, 0);

        // //添加图片
        // Image image = Image.getInstance("D:\\测试图片.jpg");
        //
        // /*
        //   img.setAlignment(Image.LEFT | Image.TEXTWRAP);
        //   img.setBorder(Image.BOX); img.setBorderWidth(10);
        //   img.setBorderColor(BaseColor.WHITE); img.scaleToFit(100072);//大小
        //   img.setRotationDegrees(-30);//旋转
        //  */
        // //图片的位置(坐标)
        // image.setAbsolutePosition(520, 786);
        // // image of the absolute
        // image.scaleToFit(200, 200);
        // image.scalePercent(15);//依照比例缩放
        // content.addImage(image);
        content.setFontAndSize(base, 8);

        content.endText();

        stamper.close();
        //关闭打开的原来PDF文件,不执行reader.close()删除不了(必须先执行stamper.close(),否则会报错)
        reader.close();
        //删除原来的PDF文件
        // File targetTemplePDF = new File(inputPDFFilePath);
        // targetTemplePDF.delete();
        inputPDFFile.close();
        return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
    }
}
    原文作者:废墟里没有神
    原文地址: https://blog.csdn.net/Jake_955/article/details/115206367
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章