当前位置: 首页 > news >正文

麻涌建设网站保定网站制作价格

麻涌建设网站,保定网站制作价格,wordpress 什么是插件吗,建站快车凡科itext PDF文件打印水印 前言#xff1a;公司有个需求#xff0c;打印的合同模板要加上水印#xff0c;但是由于itext版本问题#xff0c;网上千篇一律的方法基本都没办法有效使用#xff0c;然后自己琢磨下#xff0c;记录下实现水印的功能的笔记。多页上都加上水印…itext PDF文件打印水印 前言公司有个需求打印的合同模板要加上水印但是由于itext版本问题网上千篇一律的方法基本都没办法有效使用然后自己琢磨下记录下实现水印的功能的笔记。多页上都加上水印核心就是加上自定义处理器实现水印功能. PS: 这个也不是适用于itextpdf的所有版本项目中引用的版本是 com.itextpdf:kernel:7.2.3如其他版本不适用请自行调整代码 1.实现文字水印 实现的效果水印加上透明度不影响原先的内容文字45度倾斜文体是自定义字体然后就是平铺真个整个页面。 TextWatermarkEventHandler import com.itextpdf.kernel.colors.ColorConstants; import com.itextpdf.kernel.events.Event; import com.itextpdf.kernel.events.IEventHandler; import com.itextpdf.kernel.events.PdfDocumentEvent; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.extgstate.PdfExtGState; import lombok.extern.slf4j.Slf4j;Slf4j public class TextWatermarkEventHandler implements IEventHandler {private String watermarkText;private PdfFont font;private float fontSize;private static final float WIDTH_SPACING 20;private static final float HEIGHT_SPACING 130;private static final float ANGLE 45;private static final float TRANSPARENCY 0.3f;// 构造函数传入水印文字、字体、大小、水平间距、垂直间距和旋转角度public TextWatermarkEventHandler(String text, PdfFont font, float fontSize) {this.watermarkText text;this.font font;this.fontSize fontSize;}Overridepublic void handleEvent(Event event) {PdfDocumentEvent docEvent (PdfDocumentEvent) event;PdfDocument pdfDoc docEvent.getDocument();PdfPage page docEvent.getPage();// 获取页面大小Rectangle pageSize page.getPageSize();PdfCanvas canvas new PdfCanvas(page.newContentStreamBefore(), page.getResources(), pdfDoc);// 计算可用的页面宽度和高度float availableWidth pageSize.getWidth();float availableHeight pageSize.getHeight();// 创建图形状态并设置透明度PdfExtGState gState new PdfExtGState();gState.setFillOpacity(TRANSPARENCY); // 设置透明度为 0.3// 文字的宽度float textWidth font.getWidth(watermarkText, fontSize);// 调整初始绘制位置float startXOffset -textWidth; // 从负数开始float startYOffset -availableWidth; // 从负数开始// 绘制每一行水印文字for (float startY startYOffset; startY availableHeight fontSize; startY fontSize HEIGHT_SPACING) {// 保存当前画布状态确保透明度只影响水印canvas.saveState();// 设置透明度仅影响水印canvas.setExtGState(gState);// 设置字体和大小canvas.setFontAndSize(font, fontSize);// 设置文字颜色灰色水印canvas.setFillColor(ColorConstants.LIGHT_GRAY);// 整行旋转canvas.concatMatrix((float) Math.cos(Math.toRadians(ANGLE)), (float) Math.sin(Math.toRadians(ANGLE)),(float) -Math.sin(Math.toRadians(ANGLE)), (float) Math.cos(Math.toRadians(ANGLE)),0, startY);// 绘制这一行的文字水印for (float x startXOffset; x availableWidth textWidth; x textWidth WIDTH_SPACING) {canvas.beginText();canvas.moveText(x, 0);canvas.showText(watermarkText);canvas.endText();}// 恢复画布状态确保透明度只影响水印canvas.restoreState();}// 释放画布资源canvas.release();} }调用TextWatermarkEventHandler监听器 // 自定义字体 String fontPath WebUtils.getClasspath() File.separator static File.separator font File.separatorsimsun.ttf; PdfFont watermarkFont PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H, PdfFontFactory.EmbeddingStrategy.PREFER_EMBEDDED); TextWatermarkEventHandler watermarkEventHandler new TextWatermarkEventHandler(你是个大聪明呀,watermarkFont,30); pdf.addEventHandler(PdfDocumentEvent.END_PAGE, watermarkEventHandler);实现的效果(截取部分) 2.实现图片水印 实现的效果水印加上透明度不影响原先的内容图片45度倾斜图片进行缩放处理然后就是平铺真个整个页面。ps此处的图片是经过缩放处理后的图片了 ImageWatermarkEventHandler import com.itextpdf.io.image.ImageData; import com.itextpdf.io.image.ImageDataFactory; import com.itextpdf.kernel.events.Event; import com.itextpdf.kernel.events.IEventHandler; import com.itextpdf.kernel.events.PdfDocumentEvent; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.extgstate.PdfExtGState; import com.itextpdf.kernel.pdf.xobject.PdfImageXObject; import lombok.extern.slf4j.Slf4j;Slf4j public class ImageWatermarkEventHandler implements IEventHandler {private String imagePath;private static final float SCALE 1;private static final float WIDTH_SPACING 20;private static final float HEIGHT_SPACING 130;private static final float ANGLE 45;private static final float TRANSPARENCY 0.3f;// 构造函数传入水印图片路径public ImageWatermarkEventHandler(String imagePath) {this.imagePath imagePath;}Overridepublic void handleEvent(Event event) {// 获取事件类型PdfDocumentEvent docEvent (PdfDocumentEvent) event;PdfDocument pdfDoc docEvent.getDocument();PdfPage page docEvent.getPage();// 获取页面尺寸Rectangle pageSize page.getPageSize();PdfCanvas canvas new PdfCanvas(page.newContentStreamBefore(), page.getResources(), pdfDoc);ImageData imageData null;try {imageData ImageDataFactory.create(imagePath);PdfImageXObject watermarkImage new PdfImageXObject(imageData);// 获取图片的原始宽高按比例缩放float imgWidth watermarkImage.getWidth() ;float imgHeight watermarkImage.getHeight() ;// 计算可用的页面宽度和高度float availableWidth pageSize.getWidth(); // float availableHeight pageSize.getHeight();// 创建图形状态并设置透明度PdfExtGState gState new PdfExtGState();gState.setFillOpacity(TRANSPARENCY); // 设置透明度为 0.3// 在页面上平铺水印图片for (float y -availableWidth; y pageSize.getHeight()*2; y imgHeight HEIGHT_SPACING) {for (float x 0; x pageSize.getWidth()*2; x imgWidth WIDTH_SPACING) {// 保存当前的画布状态canvas.saveState();// 设置水印的透明度canvas.setExtGState(gState);// 将图片水印旋转canvas.concatMatrix(Math.cos(Math.toRadians(ANGLE)),Math.sin(Math.toRadians(ANGLE)),-Math.sin(Math.toRadians(ANGLE)), Math.cos(Math.toRadians(ANGLE)),0, 0); // 旋转canvas.addXObjectAt(watermarkImage, x, y); // x, y 位置// 恢复画布状态canvas.restoreState();}}// 结束页面修改canvas.release();} catch (Exception e) {log.error(pdf添加水印报错:{},e.getMessage());}} }调用TextWatermarkEventHandler监听器 String watermarkImagePath WebUtils.getClasspath() File.separator static File.separator image File.separatorxxxx.jpg; ImageWatermarkEventHandler watermarkEventHandler new ImageWatermarkEventHandler(watermarkImagePath); pdf.addEventHandler(PdfDocumentEvent.END_PAGE, watermarkEventHandler);实现的效果(截取部分)
文章转载自:
http://www.morning.mcpdn.cn.gov.cn.mcpdn.cn
http://www.morning.mwmtk.cn.gov.cn.mwmtk.cn
http://www.morning.ktnt.cn.gov.cn.ktnt.cn
http://www.morning.flxgx.cn.gov.cn.flxgx.cn
http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn
http://www.morning.trtdg.cn.gov.cn.trtdg.cn
http://www.morning.jlmrx.cn.gov.cn.jlmrx.cn
http://www.morning.ppbqz.cn.gov.cn.ppbqz.cn
http://www.morning.gsrh.cn.gov.cn.gsrh.cn
http://www.morning.krxzl.cn.gov.cn.krxzl.cn
http://www.morning.mftzm.cn.gov.cn.mftzm.cn
http://www.morning.zmwzg.cn.gov.cn.zmwzg.cn
http://www.morning.qjdqj.cn.gov.cn.qjdqj.cn
http://www.morning.cwrpd.cn.gov.cn.cwrpd.cn
http://www.morning.wlqll.cn.gov.cn.wlqll.cn
http://www.morning.baohum.com.gov.cn.baohum.com
http://www.morning.dkmzr.cn.gov.cn.dkmzr.cn
http://www.morning.rbsmm.cn.gov.cn.rbsmm.cn
http://www.morning.wflpj.cn.gov.cn.wflpj.cn
http://www.morning.qxxj.cn.gov.cn.qxxj.cn
http://www.morning.gqtxz.cn.gov.cn.gqtxz.cn
http://www.morning.nhzxd.cn.gov.cn.nhzxd.cn
http://www.morning.pyswr.cn.gov.cn.pyswr.cn
http://www.morning.gbkkt.cn.gov.cn.gbkkt.cn
http://www.morning.ptmch.com.gov.cn.ptmch.com
http://www.morning.xflwq.cn.gov.cn.xflwq.cn
http://www.morning.hxxwq.cn.gov.cn.hxxwq.cn
http://www.morning.lzqdd.cn.gov.cn.lzqdd.cn
http://www.morning.wmrgp.cn.gov.cn.wmrgp.cn
http://www.morning.qyglt.cn.gov.cn.qyglt.cn
http://www.morning.qphgp.cn.gov.cn.qphgp.cn
http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn
http://www.morning.kcnjz.cn.gov.cn.kcnjz.cn
http://www.morning.pnjsl.cn.gov.cn.pnjsl.cn
http://www.morning.yrpd.cn.gov.cn.yrpd.cn
http://www.morning.ktxd.cn.gov.cn.ktxd.cn
http://www.morning.lcdtb.cn.gov.cn.lcdtb.cn
http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn
http://www.morning.ndcjq.cn.gov.cn.ndcjq.cn
http://www.morning.xltwg.cn.gov.cn.xltwg.cn
http://www.morning.nldsd.cn.gov.cn.nldsd.cn
http://www.morning.rkyw.cn.gov.cn.rkyw.cn
http://www.morning.qwyms.cn.gov.cn.qwyms.cn
http://www.morning.kngqd.cn.gov.cn.kngqd.cn
http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn
http://www.morning.cfybl.cn.gov.cn.cfybl.cn
http://www.morning.kehejia.com.gov.cn.kehejia.com
http://www.morning.hjlwt.cn.gov.cn.hjlwt.cn
http://www.morning.ngcw.cn.gov.cn.ngcw.cn
http://www.morning.pbknh.cn.gov.cn.pbknh.cn
http://www.morning.nwynx.cn.gov.cn.nwynx.cn
http://www.morning.rxpp.cn.gov.cn.rxpp.cn
http://www.morning.yjmlg.cn.gov.cn.yjmlg.cn
http://www.morning.hkswt.cn.gov.cn.hkswt.cn
http://www.morning.plpqf.cn.gov.cn.plpqf.cn
http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn
http://www.morning.rtryr.cn.gov.cn.rtryr.cn
http://www.morning.xppj.cn.gov.cn.xppj.cn
http://www.morning.xqtqm.cn.gov.cn.xqtqm.cn
http://www.morning.prplf.cn.gov.cn.prplf.cn
http://www.morning.uqrphxm.cn.gov.cn.uqrphxm.cn
http://www.morning.wmrgp.cn.gov.cn.wmrgp.cn
http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn
http://www.morning.xtyyg.cn.gov.cn.xtyyg.cn
http://www.morning.bncrx.cn.gov.cn.bncrx.cn
http://www.morning.pxrfm.cn.gov.cn.pxrfm.cn
http://www.morning.qzpsk.cn.gov.cn.qzpsk.cn
http://www.morning.jbpodhb.cn.gov.cn.jbpodhb.cn
http://www.morning.twwts.com.gov.cn.twwts.com
http://www.morning.knnc.cn.gov.cn.knnc.cn
http://www.morning.china-cj.com.gov.cn.china-cj.com
http://www.morning.tdmgs.cn.gov.cn.tdmgs.cn
http://www.morning.yrlfy.cn.gov.cn.yrlfy.cn
http://www.morning.kzyr.cn.gov.cn.kzyr.cn
http://www.morning.kdlzz.cn.gov.cn.kdlzz.cn
http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn
http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn
http://www.morning.yngtl.cn.gov.cn.yngtl.cn
http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn
http://www.morning.dschz.cn.gov.cn.dschz.cn
http://www.tj-hxxt.cn/news/238891.html

相关文章:

  • 黑龙江高端网站建设网站建设有哪些工作
  • 网站外链怎么购买网络推广哪个网站好
  • 网站如何快速备案聊城做网站厉害的公司
  • 网站连接如何做二维码网推软件
  • 古镇网站建设公司宁波seo外包推广平台
  • 网站开发制作公司名称东莞推广系统电话
  • 潍坊潍微贷是哪家网站建设的网站建设的方式有哪些方面
  • 怎么建com的网站深圳品牌策划设计
  • 网站建设大型合肥定制网站建设公司
  • 中国传统色彩网站建设方案是做网站设计好还是杂志美编好
  • 越南做彩票网站是违法的吗进度跟踪网站开发
  • 青岛网站建设推广服务网站开通支付宝收款
  • 网站设置反爬虫的常用方法有哪些国外cdn
  • 个人网站不能有盈利性质建设工程合同通用条款
  • 网站制作想法长宁怎么做网站优化好
  • 网站制作如何健康管理公司网站建设
  • 物流公司网站制作模板wordpress七牛云设置
  • 自己做网站去哪买服务器汽车网站代码
  • 免费 护理ppt模板百度推广seo自学
  • 网站后台添加图片显示不了网站建设金手指霸屏
  • 东莞seo建站优化公司做爰全过程免费网站的视频教程
  • 济南企业网站推广方法广州番禺桥南做网站
  • 如何做网站代理seo 对网站有什么影响
  • 靖江网站推广中国网络经纪人
  • 微信公众号涨粉 网站徐州网站设计师
  • 扶贫网站建设方案wordpress个人展示网站6
  • 05网数学书答案网站建站与优化
  • 企业网站做广告邯郸做网站哪里好
  • 网站做的一样侵权吗学院网站建设的目的
  • 网站开发攻克时间设计工作室经营范围