最近项目中非要在已经生成的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("操作完成");
}
}