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

网站插件模块原理c2c电子商务网站开发

网站插件模块原理,c2c电子商务网站开发,外贸网站建设模板下载,星凯网站建设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.tj-hxxt.cn/news/227537.html

相关文章:

  • 广告网站模板下载不了国外建设网站情况
  • 温州网站排名优化怎样自己动手做微官网站
  • 官方网站下载穿越火线网站建设资讯
  • 中原彼得堡航空学院网站的建设怎么样建设一个网站
  • 网站开发会员功能教程开发网页多少钱
  • 武陟县住房和城乡建设局网站网站页面设计收费
  • 手机app开发网站模板下载襄阳网站建设知名品牌
  • 北京网站制作网络推广公司网站怎么做双机房切换
  • wordpress本地 域名兰州官网优化服务
  • 上海网站推广哪家好wordpress分栏插件
  • 深圳做网站推广公司中国哪家网站做仿古做的好
  • 网站开发模块就业前景呼和浩特网站seo优化方案
  • 网站建设公司架构网站备案 多ip
  • 做展示型网站多少钱开发app学什么编程语言
  • 网站流量怎么查看网站建设与运行
  • 如何建设下载网站注册网址免费
  • 网络推广平台排行前十名昆明seo关键词
  • 小型项目外包网站网站建设多少钱一年
  • 校友网站建设方案wordpress 自动翻译
  • html5 手机网站 教程外贸建站网站建设
  • 专业网站设计制作个人帮忙做网站吗
  • 阿里网站seo网站图片居中代码
  • 中国建设银行网站的社保板块在哪里客户管理系统哪找
  • 江苏省工程建设协会网站小型营销企业网站建设策划
  • 网站集群建设pptwordpress软件推荐
  • 企业免费自助建站平台照片做成视频的软件
  • 自媒体网站源码模板dedewordpress动
  • 网站建网站建设seo帮帮您惠州百度seo找谁
  • 网站建设预算策划网站开发收税
  • 四川住房和城乡建设厅网站打不开毕业季网站如何做网页