使用itext7给pdf添加背景
背景就是第一个元素 itext7没搞明白怎么设置图像层高 这个方法的核心思路就是新建一个页面 先把背景加上 再把要加背景的文档复制过去
/**
* 给pdf增加背景
* @return
* @throws Exception
*/
public byte[] addBgToPDF()throws Exception{
byte[] result = null;
// 获取pdf地址
String path = "";
// 获取背景图 pdf
String bgPath = "";
// 获取pdf输入流
InputStream fis = new BufferedInputStream(new FileInputStream(path));
// 建立pdf输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 获取pdf
PdfDocument pdfDoc = new PdfDocument(new PdfReader(fis)); // 待增加背景的pdf
PdfDocument pdfOutDoc = new PdfDocument(new PdfWriter(baos)); // 增加后的pdf 进行输出
// 获取背景
PdfDocument bgDoc = new PdfDocument(new PdfReader(bgPath));
PdfPage bgPage = bgDoc.getFirstPage();
// 获取背景大小
PageSize pageSize = pdfDoc.getDefaultPageSize();
for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) {
PdfPage pageIn = pdfDoc.getPage(i);
// 创建一个新的 PDF 页面,并获取其画布
PdfPage pageOut = pdfOutDoc.addNewPage(pageSize);
PdfCanvas canvas = new PdfCanvas(pageOut);
// 将背景图像绘制到新建的页面模板中
canvas.addXObject(bgPage.copyAsFormXObject(pdfOutDoc), 0, 0);
// 将原有 PDF 页面绘制到新的 PDF 页面上
PdfFormXObject formXObject = pageIn.copyAsFormXObject(pdfOutDoc);
canvas.addXObject(formXObject, 0, 0);
}
// 关闭输入和输出 PDF 文件
pdfDoc.close();
pdfOutDoc.close();
bgDoc.close();
result = baos.toByteArray();
return result;
}