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

未来的网站建设想法让别人做网站要注意什么

未来的网站建设想法,让别人做网站要注意什么,深圳珠宝品牌网站设计,网站公司云建站怎么样今天接到一个需求&#xff0c;需要在pdf中的签名处&#xff0c;插入签名照片&#xff0c;但签名位置不固定&#xff0c;话不多说上代码&#xff1a; 1、首先引入itextpdf依赖包&#xff1a; <dependency><groupId>com.itextpdf</groupId><artifactId>…

今天接到一个需求,需要在pdf中的签名处,插入签名照片,但签名位置不固定,话不多说上代码:

1、首先引入itextpdf依赖包:

        <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency>

2、具体实现逻辑如下:

	/*** description PDF插入图片(根据关键字位置动态插入)** @author yanzy* @version 1.0* @date 2025/3/27 17:26*/public static void imgToPdf2(String pdfPath, String imagePath, String outputPath, String keyword) {try {// 读取原始PDFPdfReader reader = new PdfReader(pdfPath);FileOutputStream fos = new FileOutputStream(outputPath);PdfStamper stamper = new PdfStamper(reader, fos);// 遍历PDF每一页,查找关键字并插入签名图片Boolean keyBool = true;for (int i = 1; i <= reader.getNumberOfPages(); i++) {// 获取当前页面的文本和坐标信息List<Position> positions = getPositions(reader, i);// 合并连续文本块StringBuilder combinedText = new StringBuilder();List<Position> textChunks = new ArrayList<>();for (Position pos : positions) {combinedText.append(pos.getText());textChunks.add(pos);}// 查找关键字在整个文本中的位置String fullText = combinedText.toString();int index = fullText.indexOf(keyword);if (index != -1) {// 获取关键字起始位置Position endPos = findPositionByIndex(textChunks, index + keyword.length() - 1);// 计算插入坐标(取结束位置右侧)float imgX = endPos.getX() + 20; // 横纵标,右侧偏移20单位float imgY = endPos.getY() - 20; // 纵坐标,向下移动20单位log.info("关键字位置 -> X:{}  Y: {} | 图片位置 -> X: {}  Y:{}", endPos.getX(), endPos.getY(), imgX, imgY);// 添加图片Image img = Image.getInstance(imagePath);// 图片尺寸img.scaleToFit(100, 50);// 设置图片的插入位置(X,Y坐标)img.setAbsolutePosition(imgX, imgY);// PdfStamper:直接修改原始PDF,避免图层顺序问题PdfContentByte canvas = stamper.getOverContent(i);canvas.addImage(img);keyBool = false;}}if (keyBool) {throw new Exception("未找到关键字位置!");}stamper.close();reader.close();log.info("图片插入成功!");} catch (Exception e) {e.printStackTrace();log.error("pdf插入图片失败! errMsg: {}", e.getMessage());}}/*** description 根据文本索引找到对应位置** @author yanzy* @version 1.0* @date 2025/3/27 17:26*/private static Position findPositionByIndex(List<Position> chunks, int targetIndex) {int currentIndex = 0;for (Position chunk : chunks) {int chunkLength = chunk.getText().length();if (currentIndex + chunkLength > targetIndex) {return chunk;}currentIndex += chunkLength;}return chunks.get(chunks.size() - 1);}/*** description 获取PDF页面的所有文本位置** @author yanzy* @version 1.0* @date 2025/3/27 17:26*/private static List<Position> getPositions(PdfReader reader, int pageNumber) throws Exception {List<Position> positions = new ArrayList<>();// 创建PdfContentByte和RenderListener来提取文本PdfReaderContentParser parser = new PdfReaderContentParser(reader);parser.processContent(pageNumber, new RenderListener() {@Overridepublic void beginTextBlock() {}@Overridepublic void endTextBlock() {}@Overridepublic void renderText(TextRenderInfo renderInfo) {String text = renderInfo.getText();float x = renderInfo.getBaseline().getStartPoint().get(0);float y = renderInfo.getBaseline().getStartPoint().get(1);positions.add(new Position(x, y, text));}@Overridepublic void renderImage(ImageRenderInfo renderInfo) {}});return positions;}public static void main(String[] args) {// 输入PDF路径String srcPdf = "E://test.pdf";// 输出PDF路径String destPdf = "E://output_image.pdf";// 图片路径String imagePath = "E://test.jpg";// 关键字String keyword = "本人签名:";//imgToPdf(srcPdf, imagePath, destPdf);imgToPdf2(srcPdf, imagePath, destPdf, keyword);}
/*** description pdf中的文本坐标** @author yanzy* @date 2025/3/28 15:36*/
public class Position {private final float x;private final float y;private final String text;public Position(float x, float y, String text) {this.x = x;this.y = y;this.text = text;}public float getX() {return x;}public float getY() {return y;}public String getText() {return text;}}

3、下面是pdf的内容:
在这里插入图片描述
4、运行程序后的结果:
在这里插入图片描述
5、可以看到签名照片已经成功加上了

http://www.dtcms.com/wzjs/819861.html

相关文章:

  • 那里可以免费做网站如何优化网站关键词排名
  • 怎样做收费网站磁县信息港
  • 新网站如何做推广酒店如何做网站
  • 箱包网站模板帮企业建设网站保密合同
  • 淄博网站运营公司常州制作网站价格
  • 网站和网页的目的网络营销是不是网上营销
  • 海珠网站建设梧州论坛最新主题
  • php成品网站重庆模板网站建站
  • 哪些网站的做的好看php中英文网站模板
  • 管理公司网站的职位wordpress首页缩略图
  • 网站配色网做个网站需要学会什么
  • 专门帮忙做网站的公司广平专业做网站
  • 网站优化心得网网站基础建设优化知识
  • 临沂网站建设公司哪家好房地产销售基础知识新手必看
  • 开发网页系统一般多少钱网站关键词优化到首页后怎么做
  • 东莞营销型网站建设找火速广告店需要学什么技术
  • 做网站必须有框架是吗策划一场活动的流程
  • 做品牌网站顺德乐从有做阿里巴巴的网站吗
  • 网站建设国内外研究现状模板智慧团建pc端
  • 怎样自己制作网站wordpress自动添加关键词和描述
  • 旅游网站建设普通论文加大志愿服务网站建设
  • 网站的内容与功能设计有哪些软件可以查企业信息
  • 触摸屏网站建设个人网站html源码
  • 移动网站登录入口wordpress添加编辑器
  • 上海模板网站北京网站设计建设
  • 西安网站建设方案维护湖南网络推广公司
  • 做ppt常用的网站有哪些筹划建设协会网站的方案
  • 河北青山建设集团有限公司网站网址一
  • 笋岗网站建设莱州哪有做网站的
  • 淮南做网站的镇江有哪些网站