itexpdf创建了一个带水印的pdf后,怎么添加另一个pdf的内容,一开始先复制,在向已复制的pdf中添加水印的,但是文件直接损坏了,后来先加水印,再复制文件,但是复制的文件把水印覆盖了
先复制后加水印吧,参考spire.pdf for java的方法(代码参考自spire官网教程文章),你看能不能给你点启发
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Rectangle2D;
public class Test {
public static void main(String[] args) {
//创建PdfDocument对象,并加载PDF测试文档
PdfDocument pdf1 = new PdfDocument();
pdf1.loadFromFile("test1.pdf");
//加载PDF文档2
PdfDocument pdf2 = new PdfDocument("test2.pdf");
PdfPageBase page2 = pdf2.getPages().get(0);
Dimension2D size = page2.getSize();
PdfTemplate template = page2.createTemplate();
//在pdf1中第一页插入从复制的pdf2中绘制的模板
pdf1.getPages().insert(0,size,new PdfMargins(0,0));
pdf1.getPages().get(0).getCanvas().drawTemplate(template,new Point(0,0));
//遍历文档1的每一页,加载图片,并设置成平铺水印效果
for (int i = 0; i < pdf1.getPages().getCount();i++)
{
PdfPageBase page1 = pdf1.getPages().get(i);
Dimension2D dimension2D = new Dimension();
dimension2D.setSize(page1.getCanvas().getSize().getWidth()/4, page1.getCanvas().getSize().getHeight()/3);
PdfTilingBrush brush = new PdfTilingBrush(dimension2D);
brush.getGraphics().setTransparency(0.2f);
brush.getGraphics().translateTransform(brush.getSize().getWidth()/10,brush.getSize().getHeight()/10);
brush.getGraphics().rotateTransform(30);
PdfImage image = PdfImage.fromImage("logo.png");
brush.getGraphics().drawImage(image,brush.getSize().getWidth()-image.getWidth()/2,(brush.getSize().getHeight())/2);
Rectangle2D rectangle2D = new Rectangle2D.Float();
rectangle2D.setFrame(new Point(0,0),page1.getCanvas().getClientSize());
page1.getCanvas().drawRectangle(brush,rectangle2D);
}
//保存pdf1
pdf1.saveToFile("copy3.pdf",FileFormat.PDF);
pdf1.dispose();
}
}
ps: 添加进去的PDF内容是新起一页添加的,没有和原PDF文档内容在同一个页面, 测试结果运行正常,就是不知道是不是你要的效果