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

网站插件模块原理网站开发一个模板费用

网站插件模块原理,网站开发一个模板费用,设计报告书怎么写,大连模板网站制作推荐Java 实现给pdf文件指定位置盖章功能 开发中遇到一个需求, 需要给用户上传的的pdf文件, 指定位置上盖公章的功能, 经过调研和对比, 最终确定实现思路. 这里是使用pdf文件中的关键字进行章子的定位, 之所以这样考虑是因为如果直接写死坐标的话, 可能会出现因pdf大小, 缩放, 盖章…Java 实现给pdf文件指定位置盖章功能 开发中遇到一个需求, 需要给用户上传的的pdf文件, 指定位置上盖公章的功能, 经过调研和对比, 最终确定实现思路. 这里是使用pdf文件中的关键字进行章子的定位, 之所以这样考虑是因为如果直接写死坐标的话, 可能会出现因pdf大小, 缩放, 盖章位置变更的原因, 导致公章位置错位. 所以选择了根据关键字定位的方式. 下面列出具体的实现方式: 使用的是Java语言, 使用Maven管理依赖, 下面是操作pdf所依赖的库的坐标 dependencygroupIdcom.itextpdf/groupIdartifactIditextpdf/artifactIdversion5.5.12/version /dependency dependencygroupIdcom.itextpdf/groupIdartifactIditext-asian/artifactIdversion5.2.0/version /dependency下面是具体的代码逻辑 CustomRenderListener, 自定义渲染监听器, 实现查找关键字自有逻辑 import com.itextpdf.awt.geom.Rectangle2D.Float; import com.itextpdf.text.pdf.parser.ImageRenderInfo; import com.itextpdf.text.pdf.parser.RenderListener; import com.itextpdf.text.pdf.parser.TextRenderInfo; import lombok.Data;/*** pdf关键词帮助类** author wdhcr*/ Data public class CustomRenderListener implements RenderListener {// 坐标private float[] coordinate null;// 关键字private String keyWord;// pdf当前页private int page;Overridepublic void beginTextBlock() {}Overridepublic void endTextBlock() {}Overridepublic void renderImage(ImageRenderInfo arg0) {}Overridepublic void renderText(TextRenderInfo textRenderInfo) {String text textRenderInfo.getText();if (null ! text text.contains(keyWord)) {Float boundingRange textRenderInfo.getBaseline().getBoundingRectange();coordinate new float[3];coordinate[0] boundingRange.x;coordinate[1] boundingRange.y;coordinate[2] page;}} }获取关键字坐标的工具类 import com.itextpdf.text.Image; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfGState; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfStamper; import com.itextpdf.text.pdf.parser.PdfReaderContentParser; import com.jkwl.common.exception.BaseException; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j;import java.io.*;/*** Pdf定位工具类* author wdhcr*/ Slf4j public class PdfUtils {/*** 获取关键字所在PDF坐标** param pdfReader 流* param keyWords 关键词* return float[] 坐标*/public static float[] getKeyWords(PdfReader pdfReader, String keyWords) {float[] coordinate null;int page 0;try {int pageNum pdfReader.getNumberOfPages();PdfReaderContentParser pdfReaderContentParser new PdfReaderContentParser(pdfReader);CustomRenderListener renderListener new CustomRenderListener();renderListener.setKeyWord(keyWords);for (page 1; page pageNum; page) {renderListener.setPage(page);pdfReaderContentParser.processContent(page, renderListener);coordinate renderListener.getCoordinate();if (coordinate ! null) {break;}}} catch (IOException e) {e.printStackTrace();}return coordinate;}SneakyThrowspublic static void stampToPdf(InputStream pdfInputStream, String keyWords, InputStream sealInputStream, OutputStream outputStream) {byte[] sealBytes sealInputStream.readAllBytes();PdfReader reader new PdfReader(pdfInputStream);float[] xyz PdfUtils.getKeyWords(reader, keyWords);if (xyz null) {throw new BaseException(未找到盖章位置);}PdfStamper stamper new PdfStamper(reader, outputStream);// 将印章图片放在pdf文件的第页PdfContentByte over stamper.getOverContent((int) xyz[2]);// 需要插入的图片Image contractSealImg Image.getInstance(sealBytes);// 保存状态over.saveState();// 图片处理PdfGState pdfGState new PdfGState();// 给图片设置透明度一般不需要pdfGState.setFillOpacity(0.8F);over.setGState(pdfGState);contractSealImg.setAbsolutePosition(xyz[0] 50, xyz[1] - 40);// 设置图片大小contractSealImg.scaleAbsolute(100, 100);// 将图片添加到pdf文件over.addImage(contractSealImg);over.restoreState();stamper.setFormFlattening(true);// 关闭流stamper.close();reader.close();}}测试demo SneakyThrowspublic static void main(String[] args) {FileInputStream pdfInputStream new FileInputStream(/Users/Desktop/报告模版.pdf);FileInputStream sealInputStream new FileInputStream(/Users/Desktop/dbd.png);FileOutputStream fileOutputStream new FileOutputStream(/Users/Desktop/报告模版盖章.pdf);// 关键字为: 签发日期PdfUtils.stampToPdf(pdfInputStream, 签发日期, sealInputStream, fileOutputStream);fileOutputStream.close();pdfInputStream.close();sealInputStream.close();System.out.println(盖章完成);}公章如图所示 报告模版如下: 盖完章后
http://www.hkea.cn/news/14500820/

相关文章:

  • 数字营销技术应用网站兰州seo快速优化报价
  • 摄像头做直播网站织梦动漫网站模板
  • 济南市住房和城乡建设局网站网站的后端怎么开发
  • 学风建设专题网站厦门seo排名优化公司
  • 官方网站包括哪几个网站陶瓷网站模板
  • 视频网站开发技术WordPress搜索词记录
  • 相册制作整站seo优化推广
  • 寄生虫做网站流量网业大全
  • 门户子网站建设申请网站根目录是什么
  • 学做效果图网站有哪些软件有哪些wordpress搜索跳转
  • 织梦怎么查看网站点击app设计开发
  • 网站都是用什么编写的颍上网站建设
  • 天津网站优化排名推广企业网络推广哪家公司好
  • 创建网站公司好中文简洁网站设计图
  • wordpress站点统计插件app store官方正版下载
  • 招聘网站做两份简历上海市2022进博会
  • 南京凯盛建设集团有限公司网站php 数据库 wordpress
  • 山东住房建设部网站网络营销方式有哪些免费
  • 政务公开和网站建设工作问题做贸易注册网站用自己名字
  • 做纺织的用什么网站婚庆网站有哪些
  • 网站建设z上海网络建设公司
  • 卓训网是个什么网站html公司网页
  • 微信 网站设计模板免费下载歌曲的网站
  • 汕头免费建站泰安微网站建设
  • 电子商务网站建设各项费用预算是多少旅游网站的功能结构图
  • 做集团网站个人做外贸怎样起步
  • 网站制作的差异化定位求职简历模板2021
  • 网站一般做几页建设网站怎样提要求
  • 网站按钮确定后图片怎么做电影网站如何建设会员式
  • 重庆交通建设集团网站学院网站建设 好处