接上一篇,pdf跟tif 是一起做的

java实现

1、给PDF文件添加图片水印:

public static void waterMark1(String inputFile,String outputFile,String eciWaterPath) {    MessageInfo msgInfo = new MessageInfo();//消息类try {    PdfReader reader = new PdfReader(inputFile);
//          PdfReader reader = new PdfReader("\\home\\opt_user\\sp\\GSPT008S\\eci1.pdf");    //main() 用这个System.out.println("读取PDF文件模板完了");PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));    BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",   BaseFont.EMBEDDED);  Rectangle pageRect = null;  PdfGState gs = new PdfGState();  gs.setFillOpacity(0.9f);  //透明度gs.setStrokeOpacity(0.1f);int total = reader.getNumberOfPages() + 1;   JLabel label = new JLabel();  FontMetrics metrics;  int textH = 0;   int textW = 0;
//          label.setText(waterMarkName);   metrics = label.getFontMetrics(label.getFont());   textH = metrics.getHeight();textW = metrics.stringWidth(label.getText());  //            //生成水印图片
//          String waterPath = ImageUtils.graphicsGeneration("eci");PdfContentByte under;    for (int i = 1; i < total; i++) {   pageRect = reader.getPageSizeWithRotation(i);   under = stamper.getOverContent(i);   under.saveState();  under.setGState(gs);under.beginText();    under.setFontAndSize(base, 40);    Image img = Image.getInstance(eciWaterPath);System.out.println("读取水印图片模板完了");int size = 25;float img_Width = img.getWidth();float img_Heigth = img.getHeight();float pdfW = pageRect.getWidth();float pdfH = pageRect.getHeight();img.setAbsolutePosition(pdfW-(img_Width*40/100),pdfH-(img_Heigth*6/5));//(X,Y)img.scalePercent(size);under.addImage(img);//             under.showTextAligned(Element.ALIGN_LEFT, text, 10, 10, 0);/*under.showTextAlignedKerned(alignment, text, x, y, rotation);              alignment   左、右、居中(ALIGN_CENTER, ALIGN_RIGHT or ALIGN_LEFT)text 要输出的文本x 文本输入的X坐标y   文本输入的Y坐标*/// 添加水印文字    under.endText(); }   System.out.println("PDF文件水印打印成功!路径:"+outputFile);//说三遍//一定不要忘记关闭流//一定不要忘记关闭流//一定不要忘记关闭流stamper.close();  reader.close();} catch (Exception e) {    e.printStackTrace();
//          throw new BusinessException("文件不存在:"+inputFile);logger.error("文件不存在:"+inputFile);logger.error(e.getMessage());msgInfo.setSuccess(false);msgInfo.setMessageContent("文件不存在:"+inputFile);throw new BusinessException(MsgIds.GSPT008SDOWNLOAD004,"流程处理过程出现异常,请联系管理员!");}    }public static void main(String[] args) throws Exception {
//      PDFWatermark pdfw = new PDFWatermark();String inputFile = "\\home\\opt_user\\sp\\GSPT008S\\eci2.pdf";String outputFile = "\\home\\opt_user\\sp\\GSPT008S\\eci2_output.pdf";String eciWaterPath = ImageUtils.graphicsGeneration("eci");waterMark1(inputFile, outputFile,eciWaterPath);}

效果:

2、java实现给PDF文件添加文字水印,并调整文字大小、透明度、旋转角度,铺满整个页面等等

public class AddWatermark {/** 写共通日志 */private static Logger logger = LoggerFactory.getLogger(AddWatermark.class);private static int interval = -5;/*** pdf加水印* @param inputFile* @param outputFile* @param* @param*/public static void waterMark(String inputFile,String outputFile,String waterMarkName) {MessageInfo msgInfo = new MessageInfo();//消息类try {    PdfReader reader = new PdfReader(inputFile);
//          PdfReader reader = new PdfReader("\\home\\opt_user\\sp\\GSPT008S\\eci1.pdf");    //main() 用这个System.out.println("读取PDF文件模板完了");PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));    BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",   BaseFont.EMBEDDED);  Rectangle pageRect = null;  PdfGState gs = new PdfGState();  gs.setFillOpacity(0.2f);  //透明度gs.setStrokeOpacity(0.1f);int total = reader.getNumberOfPages() + 1;   JLabel label = new JLabel();  FontMetrics metrics;  int textH = 0;   int textW = 0;   label.setText(waterMarkName);metrics = label.getFontMetrics(label.getFont());   textH = metrics.getHeight();textW = metrics.stringWidth(label.getText());PdfContentByte under;for (int i = 1; i < total; i++) {   pageRect = reader.getPageSizeWithRotation(i);   under = stamper.getOverContent(i);   under.saveState();  under.setGState(gs);under.beginText();    under.setFontAndSize(base, 10);//你可以随心所欲的改你自己想要的角度   水印文字成30度角倾斜for (int height = interval + textH; height < pageRect.getHeight(); height = height + textH * 3) {for (int width = interval + textW; width < pageRect.getWidth() + textW; width = width + textW * 2) {under.showTextAligned(Element.ALIGN_LEFT, waterMarkName, width - textW, height - textH, 30);}}// 添加水印文字    under.endText(); }   System.out.println("PDF文件水印打印成功!路径:"+outputFile);//说三遍//一定不要忘记关闭流//一定不要忘记关闭流//一定不要忘记关闭流stamper.close();  reader.close();} catch (Exception e) {    e.printStackTrace();
//          throw new BusinessException("文件不存在:"+inputFile);logger.error("文件不存在:"+inputFile);logger.error(e.getMessage());msgInfo.setSuccess(false);msgInfo.setMessageContent("文件不存在:"+inputFile);throw new BusinessException(MsgIds.GSPT008SDOWNLOAD004,"流程处理过程出现异常,请联系管理员!");}    }public static void main(String[] args) throws Exception {waterMark("D:\\home\\opt_user\\sp\\IMG\\GSPO001Backups\\ECI_716WH0021.pdf","D:\\home\\opt_user\\sp\\IMG\\GSPO001\\ECI_716WH0021.pdf","GTMC补给资料");}}

效果:

java实现给PDF文件添加图片水印,java实现给PDF文件添加文字水印相关推荐

  1. Java实现一行代码生成二维码,可传输到前端展示,可自定义二维码样式,可设置图片格式,可对二维码添加图片,可对二维码添加文字,可以设置二维码大小、字体大小、字体颜色、边框颜色、边框大小等等

    Java实现一行代码生成二维码,可传输到前端展示,可自定义二维码样式,可设置图片格式,可对二维码添加图片,可对二维码添加文字,可以设置二维码大小.字体大小.字体颜色.边框颜色.边框大小等等. 0.准备 ...

  2. python图片保存为txt文件_python实现对文件中图片生成带标签的txt文件方法

    在深度学习中经常需要生成带标签的图片名称列表,xxxlist.txt文件,下面写一个简单的python脚本生成该文件列表. import os def generate(dir,label): fil ...

  3. 【精】【PDF链接转图片】- Java用pdfbox将PDF的URL转换并压缩成图片,解决“口口口”乱码问题

    [业务场景]:做一个开电子发票的业务,中税返回我们一个pdf的url,这个url在web端是可以显示的,移动端:ios可以正常显示,安卓显示为是否要下载.产品邀请发票预览需让用户第一时间看到,不应该有 ...

  4. C# 处理PPT水印(一)——添加水印效果(文字水印、图片水印)

    对文档添加水印可以有效声明和保护文档,是保护重要文件的方式之一.在PPT文档中同样也可以设置水印,包括文本水印和图片水印,本文将讲述如何通过Spire.Presentation for .NET来对P ...

  5. windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。

    1. 需求 我想把资源文件先加密成压缩文件,然后同时创建每个加密压缩文件同名的文件夹,同时需要把这个加密文件拷贝到这个同名的文件夹,然后还需要把一个图片和一个文本文档同时放进这个文件夹,然后在不加密压 ...

  6. android项目添加图片,安卓开发:往项目中添加并使用图片

    一 往项目中添加图片文件 (1)iOS项目 在iOS项目中,如果往项目中添加的图片是png格式的,就是往Assets.xcassets文件夹中添加. 如果不是png格式,比如jpg格式的图片,就不能往 ...

  7. python根据文件名或后缀名遍历文件夹下所有文件或图片的路径,并计算文件行数

    python遍历文件夹下所有文件或图片的路径 代码 指定目录下的指定后缀文件 import glob #获取指定目录下的所有图片 print (glob.glob("\\home\\qiao ...

  8. vue3+echarts实现世界地图以及轨线(label使用fomatter+rich动态添加图片及背景色,以及label如何添加动态边框色)

    背景 最近项目开发,需要开发一个世界地图,并且实现经纬度对应的点对点轨线动效,效果如下: 问题 如何在刚打开页面的时候就显示地点名称 label如何同时添加图片和背景色 label怎么动态修改字体颜色 ...

  9. java pdf文件转换图片,pdf文件转图片(java实现)

    项目中pdf文件太大,在手机端打开缓慢.需要将pdf文件转换成图片.加载比较快,增加用户体验.话不多说,直接上干货. 一.在pom引入依赖的jar org.apache.pdfbox fontbox ...

  10. pdf文件转图片(java实现)

    项目中pdf文件太大,在手机端打开缓慢.需要将pdf文件转换成图片.加载比较快,增加用户体验.话不多说,直接上干货. 一.在pom引入依赖的jar <!-- https://mvnreposit ...

最新文章

  1. 3G时代需要“移动云计算专业”
  2. (0007) iOS 开发之Xcode8上传AppStore遇到的TencentOpenApi_IOS_Bundle.bundle
  3. textfile 属性
  4. 转:让 ThinkPad 的中键加小红帽模拟鼠标滚轮
  5. java多线程遇到的问题_关于Java多线程遇到的问题.
  6. #10017 「一本通 1.2 练习 4」传送带+三分套三分
  7. 【华为云技术分享】使用pdb调试python代码的方法
  8. 视频抽帧并存图 python_使用Python实现跳帧截取视频帧
  9. IBM存储扩展柜磁盘在线扩容(一)
  10. 组态王串口服务器通讯不稳定,组态王通信频繁掉线
  11. 【信息系统项目管理师】第十三章 项目合同管理思维导图
  12. 产品设计必读书籍推荐
  13. 计算机1教学,计算机一级教学大纲1
  14. 论文研读-多目标自适应memetic算法
  15. 转载 | 年度盘点!Flink 社区全年的精华内容都在这里啦
  16. 打开*.acb格式音频文件
  17. tailwind css的使用
  18. 生命中不仅仅只有代码
  19. networkx 有向图强连通_有向图的强连通分支
  20. s:hidden name=id value=id/s:hidden

热门文章

  1. ICA与PCA的区别
  2. ES如何做到亿级数据查询毫秒级返回
  3. 用python画美国国旗
  4. 太逗了,程序员有趣搞笑动图
  5. nokia n1 android 6,诺基亚首款安卓平板,Nokia N1正式发布
  6. 猪八戒创始人谈创业:500元做成1500万大生意
  7. 记录oracle的一些操作
  8. 实现在H5中唤起抖音APP
  9. iPhone回收中这样看划痕就不会被压价了
  10. 解决Notepad++ Plugin Manager无法加载插件的方法no new plugins available