zoukankan      html  css  js  c++  java
  • PDF上添加水印

    1.整合jar:

      itext-asian-5.2.0.jar,itextpdf-5.5.10.jar,iTextAsianCmaps.jar

      下载:itext的整合jar包

     2.使用方法:

    public void ShowTextAligned(int alignment, String text, float x,float y, float rotation)
    参数 参数说明:
    alignment 左、右、居中(ALIGN_CENTER, ALIGN_RIGHT or ALIGN_LEFT)
    text 要输出的文本
    x 文本输入的X坐标
    y 文本输入的Y坐标
    rotation 文本的旋转角度

       /**
         * 
         * @param output     生成文件的路径
         * @param inputPath  原文件的路径
         * @param wartermark 水印内容
         * @return
         */
        public static boolean createMark(String output, String inputPath,
                String wartermark){
            boolean flag = false;
            PdfReader reader = null;
            PdfStamper stamper = null;
            Rectangle pageRect = null;
            try {
                reader = new PdfReader(inputPath);
                stamper = new PdfStamper(reader, new FileOutputStream(output));
                int total = reader.getNumberOfPages() + 1;
                PdfContentByte content;
                BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.EMBEDDED);
                PdfGState gs = new PdfGState();
                
                for (int j = 1; j < total; j++) {
                    pageRect = stamper.getReader().getPageSizeWithRotation(j);
                    // 计算水印X,Y坐标
                    float x = 0;
                    float y = 0;
                    
                    content = stamper.getOverContent(j);// 在内容上方加水印
                    gs.setFillOpacity(1.f);// 设置透明度
                    content.setGState(gs);
                    content.beginText();
                    content.setColorFill(BaseColor.LIGHT_GRAY);
                    content.setFontAndSize(base, 15);
                    content.setTextMatrix(70, 200);
                    
                    while(x<pageRect.getWidth()){
                        while(y < pageRect.getHeight()){
                            // 水印文字成45度角倾斜
                            content.showTextAligned(Element.ALIGN_CENTER, wartermark, x,y, 55);
                            y += pageRect.getHeight()/20;
                        }
                        y = 0;
                        x += pageRect.getWidth()/8;
                    }
                    x = 0;
                    content.endText();
                }
                stamper.close();
                System.out.println("添加水印成功。。。。。。。。。。。。。。。");
                flag=true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return flag;
        }

     

    3.引用:

    1.  Java操作PDF之iText超入门
    2.  java使用itext为PDF文件添加水印
    3. java 为pdf添加水印图片

     

  • 相关阅读:
    包介绍、日志模块及深浅拷贝
    一些常用模块
    RE模块(正则)
    软件开发规范
    模块及模块导入
    一些常用的内置函数总结
    迭代器、可迭代对象、迭代器对象
    多层装饰器例子
    闭包函数和装饰器
    递归、二分法、三元表达式及内置函数和匿名函数
  • 原文地址:https://www.cnblogs.com/Dream2hc/p/java49512763.html
Copyright © 2011-2022 走看看