【itext学习之路】--4.给pdf增加文本水印和图片水印

来源:【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.4fgs.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.4fgs.setStrokeOpacity(0.4f);try {Image image = Image.getInstance("d:/tomatocc.jpg");// 设置坐标 绝对位置 X Yimage.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的简单操作就介绍到这里,在下篇文章中,我们将要介绍印章水印。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postman 使用方法详解

From:https://blog.csdn.net/fxbin123/article/details/80428216 Postman使用详解:https://www.cnblogs.com/xiaoxi-3-/p/7839278.html Postman用法简介:https://blog.csdn.net/flowerspring/article/details/52774399 Postman 详解&#xff…

基于互联网大脑架构的腾讯未来趋势分析[系列1]

作者:刘锋,计算机博士 《互联网进化论》前言互联网大脑架构不是人为规划出来的,而是过去50年,互联网在科学探索和商业竞争两大动力推动下,形成的类脑架构。它的提出是基于2008年以来,我们对移动互联网&…

Linux看内存标压低压,三代锐龙、国产Linux上身笔记本电脑,性能是否和参数一样好看?...

原标题:三代锐龙、国产Linux上身笔记本电脑,性能是否和参数一样好看?如果你从很早开始就关注电脑行业,基本上你身边的朋友都会告诫你一句:“笔记本电脑千万别买AMD的……”并不是AMD不好,说实话&#xff0c…

Windows 安装 MongoDB 和 可视化工具Robo3T

MongoDB 官网下载地址:https://www.mongodb.com/try/download/community MongoDB 是一款非常热门的 NoSQL 面向文档的数据库管理系统, 分为 企业版收费版 和 社区免费版。MongoDB 使用 BSON 对象来存储,与 JSON 格式类型的 "键 - 值&quo…

量子计算生态:市场预期、行业应用与“霸权”争夺

来源:资本实验室从IBM宣布推出业界首个商用量子计算系统,到我国开通全球首条量子通信干线并成功实现首次洲际量子通信,2017年的量子计算领域精彩不断,并不断提升市场对量子计算的预期。除了应用于国防安全,在科研、医疗…

xhtmlrenderer + iText-HTML转PDF

来源:xhtmlrenderer iText-HTML转PDF_hunan961的博客-CSDN博客_xhtmlrenderer xhtmlrendereitext2.0.8 将html转成pdf,带样式、图片(也支持二维码、条形码)等 主要步骤 生成html(css样式直接放在style中)html转换pdf方法数据返…

NASA打算送机器蜜蜂去探索火星上的生命痕迹

来源:国际智能机器人用机械昆虫做侦察兵是科幻电影里存在了多年的场景,如今现实中已经有科学家在做这件事,譬如用机械蜜蜂探索太空。NASA最近就花了12.5万美元资助一个名为“Marsbees”的火星探测工具的科研项目。“Marsbees”是一款微型机器…

linux usb 驱动漏洞,不测不知道 这么多的USB漏洞要从何“补”起?

原标题:不测不知道 这么多的USB漏洞要从何“补”起?[PConline 杂谈]生活中,USB接口可以说无处不在,路由器、打印机、投影机、PC电脑、台式机等等,且使用频率极高。当然,作为硬件设备的输入输出接口,其安全…

xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题

来源:xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题 - 煮过的花朵 - 博客园 之前用itext7将html导出为pdf,比较方便,代码较少,而且支持base64的图片。…

商汤科技宣布C轮战略融资6亿美元 阿里领投苏宁跟投

来源:雷帝网 人工智能平台公司商汤科技SenseTime宣布完成6亿美元C轮融资,由阿里巴巴集团领投,新加坡主权基金淡马锡、苏宁等投资机构和战略伙伴跟投。商汤科技联合创始人、CEO徐立表示:商汤科技C轮融资将进一步夯实公司在人工智能…

MongoDB Shell和Robo3T使用以及与SQL语法比较

From:MongoDB Shell 了解使用 - 大葱哥 - 博客园 MongoDB基本管理命令:MongoDB基本管理命令_千与的专栏-CSDN博客_mongo查询命令 MongoDB常用操作命令大全:MongoDB常用操作命令大全_piaocoder-CSDN博客_mongodb常用命令 mongodb 命令行基本…

2018全球100个最有价值的科技品牌 18个中国品牌上榜

来源:全球企业动态英国品牌评估机构Brand Finance发布“2018全球100个最有价值的科技品牌榜”(Top 100 most valuable tech brands 2018),前五位都是美国品牌。美国上榜品牌总价值9590亿美元,占百强品牌总价值14673亿美元的65%。亚马逊跃升至…

Alpine Linux 使用简介

From:https://www.aliyun.com/jiaocheng/137717.html Alpine Linux、CoreOS、RancherOS、Red Hat 原子项目、 VMware光子操作系统比较https://blog.csdn.net/hxpjava1/article/details/78482987 Alpine Linux配置使用技巧:https://www.aliyun.com/jiao…

实例学习SSIS(五)--理论介绍SSIS

导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS(四)--使用日志记录和错误流重定向 实例学习SSIS…

MIT教授Tomaso Poggio演讲与专访:智能背后的科学与工程 | 腾讯AI Lab学术论坛

来源:腾讯AI实验室腾讯AI Lab第二届学术论坛在深圳举行,聚焦人工智能在医疗、游戏、多媒体内容、人机交互等四大领域的跨界研究与应用。全球30位顶级AI专家出席,对多项前沿研究成果进行了深入探讨与交流。腾讯AI Lab还宣布了2018三大核心战略…

linux捕捉信号sigint失败,为shell布置陷阱:trap捕捉信号方法论

本文目录:1.1 信号说明1.2 trap布置陷阱1.3 布置完美陷阱必备知识家里有老鼠,快消灭它!哎,又给跑了。老鼠这小东西跑那么快,想直接直接消灭它还真不那么容易。于是,老鼠药、老鼠夹子或老鼠笼就派上用场了&a…

Trade Stages - The Trade Path

Gieno Trade Stages - The Trade Path STARTS OFF “greed orientated.”Loses because:1 Market problemsNot a zero sum game, a “very negative” sum gameMarket psychology – doing the wrong thing at the wrong timeThe majority is always wrongMarket exists on ch…

win10、oneplus7pro 使用 Kali

1、Windows 10 使用 Kali Linux子系统 微软为 Windows Subsystem for Linux (WSL) 带来了著名的 Kali Linux ,无虚拟机,无Docker实现Windows 和 Kali Linux 交互。 window 开启 wsl 功能: 1.打开控制面板( winR,输入…

干货|十大产业方向深度解析!《2020科技产业趋势报告》

来源:机器人大讲堂报告下载:https://pan.baidu.com/s/1BKf2rINXx0CVLhgokfYrgQ未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评…

交互式数据包处理程序 Scapy 用法

From:https://www.cnblogs.com/hongxueyong/p/5641475.html Scapy 用法官方文档:http://scapy.readthedocs.io/en/latest/#starting-scapyAbout ScapyScapy is a Python program that enables the user to send, sniff and dissect and forge network pa…