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

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

itexpdf创建了一个带水印的pdf后,怎么添加另一个pdf的内容,一开始先复制,在向已复制的pdf中添加水印的,但是文件直接损坏了,后来先加水印,再复制文件,但是复制的文件把水印覆盖了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • Miaonly Dadamia 10月前

    先复制后加水印吧,参考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文档内容在同一个页面, 测试结果运行正常,就是不知道是不是你要的效果

    点赞 评论 复制链接分享

为你推荐