【itext学习之路】

您所在的位置:网站首页 图片里的水印怎么添加 【itext学习之路】

【itext学习之路】

2024-07-04 03:36| 来源: 网络整理| 查看: 265

来源:【itext学习之路】-------(第四篇)给pdf增加文本水印和图片水印_tomatocc的博客-CSDN博客_itext添加水印

一般而言,许多公司在做pdf之后,都会将公司的logo或者网址以水印的方式添加到pdf文件中。本篇文章,我们将介绍在制作pdf的时候,如何将水印加入到pdf中去。

这里要说明一点:水印是要放在pdf中的,因此在创建PdfContentByte对象之前,一定要先 document.newPage();。二者顺序是不能反过来的,如果反过来的意思就是先画水印,在创建一个pdf页面,显然不符合逻辑了。

package cn.tomtocc.pdf; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.BaseColor; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Element; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfGState; import com.itextpdf.text.pdf.PdfWriter; public class pdfTest { public static void main(String[] args) throws FileNotFoundException, DocumentException { //实现A4纸页面 并且横向显示(不设置则为纵向) Document document = new Document(PageSize.A4.rotate()); PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("d:/demo.pdf")); // 打开文档 document.open(); // 创建第一页(如果只有一页的话,这一步可以省略) document.newPage(); // 加入水印 PdfContentByte waterMar = pdfWriter.getDirectContentUnder(); // 开始设置水印 waterMar.beginText(); // 设置水印透明度 PdfGState gs = new PdfGState(); // 设置填充字体不透明度为0.4f gs.setFillOpacity(0.4f); try { // 设置水印字体参数及大小 (字体参数,字体编码格式,是否将字体信息嵌入到pdf中(一般不需要嵌入),字体大小) waterMar.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 60); // 设置透明度 waterMar.setGState(gs); // 设置水印对齐方式 水印内容 X坐标 Y坐标 旋转角度 waterMar.showTextAligned(Element.ALIGN_RIGHT, "www.tomatocc.com" , 500, 430, 45); // 设置水印颜色 waterMar.setColorFill(BaseColor.GRAY); //结束设置 waterMar.endText(); waterMar.stroke(); } catch (IOException e) { e.printStackTrace(); }finally { waterMar = null; gs = null; } // 加入文档内容 document.add(new Paragraph("my first pdf demo")); // 关闭文档 document.close(); pdfWriter.close(); } }

然后我们打开我们的pdf,如下:

 

接下来,我们继续操作“图片水印” package cn.tomtocc.pdf; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.BaseColor; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Element; import com.itextpdf.text.Image; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfGState; import com.itextpdf.text.pdf.PdfWriter; public class pdfTest { public static void main(String[] args) throws FileNotFoundException, DocumentException { //实现A4纸页面 并且横向显示(不设置则为纵向) Document document = new Document(PageSize.A4.rotate()); PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("d:/demo.pdf")); // 打开文档 document.open(); // 创建第一页(如果只有一页的话,这一步可以省略) document.newPage(); // 加入水印 PdfContentByte waterMar = pdfWriter.getDirectContentUnder(); // 开始设置水印 waterMar.beginText(); // 设置水印透明度 PdfGState gs = new PdfGState(); // 设置笔触字体不透明度为0.4f gs.setStrokeOpacity(0.4f); try { Image image = Image.getInstance("d:/tomatocc.jpg"); // 设置坐标 绝对位置 X Y image.setAbsolutePosition(200, 300); // 设置旋转弧度 image.setRotation(30);// 旋转 弧度 // 设置旋转角度 image.setRotationDegrees(45);// 旋转 角度 // 设置等比缩放 image.scalePercent(90);// 依照比例缩放 // image.scaleAbsolute(200,100);//自定义大小 // 设置透明度 waterMar.setGState(gs); // 添加水印图片 waterMar.addImage(image); // 设置透明度 waterMar.setGState(gs); //结束设置 waterMar.endText(); waterMar.stroke(); } catch (IOException e) { e.printStackTrace(); }finally { waterMar = null; gs = null; } // 加入文档内容 document.add(new Paragraph("my first pdf demo")); // 关闭文档 document.close(); pdfWriter.close(); } }

然后我们打开文档,就可以看到一个带图片水印的pdf了

到目前为止,关于pdf的简单操作就介绍到这里,在下篇文章中,我们将要介绍印章水印。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3