这可怎么整啊 2020-06-24 16:08 采纳率: 0%
浏览 394

itexpdf怎么创建一个带水印的pdf文件后,将另一个pdf的内容添加进去???

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 保护模式-系统加载-段寄存器