itext 在已知页码的情况下,往pdf中添加图片,实测有效,下面贴出代码

最近项目中非要在已经生成的pdf中添加二维码,网上搜索一把,终于找到一个合适点的,不过这个不灵活,不过却能解决我的问题,我就想在第一页某个位置插入一张图片而已,就这么简单,只要不覆盖原来pdf中的内容就行了。下面是代码:
/**
 * @author Administrator
 *
 */
package pdf;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.parser.ImageRenderInfo;
import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
import com.itextpdf.text.pdf.parser.RenderListener;
import com.itextpdf.text.pdf.parser.TextRenderInfo;

class TestMakePdf{
    public static void main(String[] args) throws Exception {
        // 模板文件路径
        String templatePath = "C:/Users/Administrator/Desktop/template.pdf";
        // 生成的文件路径
        String targetPath = "C:/Users/Administrator/Desktop/newPDF.pdf";
        // 图片路径
        String imagePath = "C:/Users/Public/Pictures/Sample Pictures/a.jpg";

        // 读取模板文件
        InputStream input = new FileInputStream(new File(templatePath));
        PdfReader reader = new PdfReader(input);
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(targetPath));
        //这里是写死要插入的坐标
        float x = 300;
        float y = 700;

        // 读图片
        Image image = Image.getInstance(imagePath);
        // 获取操作的页面
        PdfContentByte under = stamper.getOverContent(1);
        // 根据域的大小缩放图片
        image.scaleToFit(51, 49);
        // 添加图片
        image.setAbsolutePosition(x, y);
        under.addImage(image);

        stamper.close();
        reader.close();
        System.out.println("操作完成");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_20423863/article/details/84027733