itexpdf创建了一个带水印的pdf后,怎么添加另一个pdf的内容,一开始先复制,在向已复制的pdf中添加水印的,但是文件直接损坏了,后来先加水印,再复制文件,但是复制的文件把水印覆盖了
1条回答 默认 最新
- Dadamia 2020-06-24 17:54关注
先复制后加水印吧,参考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文档内容在同一个页面, 测试结果运行正常,就是不知道是不是你要的效果
解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器