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

多张图片生成PDF每张图片生成pdf的一页

需要的库

  <!-- 生成pdf--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency><!-- https://mvnrepository.com/artifact/commons-net/commons-net FTPClient --><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.6</version></dependency>

代码一,生成本地pdf文件

if (list.size() > 0) {Document document = new Document();FTPClient ftp = new FTPClient();try {//1、创建一个document对象//2、创建一个PdfWriter实例FileData fileData1=list.get(0);String filenamePdf=fileData1.getCatalogname()+fileData1.getCatalogid()+".pdf";PdfWriter.getInstance(document, new FileOutputStream(filenamePdf));//3、打开文档document.open();int pagenum = 0;for (FileData filePage : list) {//页码pagenum++;String folder = filePage.getFolder();//服务器主机String host = filePage.getHost();//服务器端口int port = Integer.parseInt(filePage.getPort());//登录用户名String username = filePage.getUsername();//登录密码String pwd = filePage.getPassword();ftp.setControlEncoding(filePage.getEncoding());ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));ftp.connect(host, port);if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {ftp.disconnect();}ftp.login(username, pwd);ftp.setFileType(FTP.BINARY_FILE_TYPE);ftp.enterLocalPassiveMode();ftp.changeWorkingDirectory(folder);final ByteArrayOutputStream bos = new ByteArrayOutputStream();ftp.retrieveFile(filePage.getFilename(), bos);Image img = Image.getInstance(bos.toByteArray());img.setAlignment(Image.ALIGN_CENTER);// 根据图片大小设置页面,一定要先设置页面,再newPage(),否则无效document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));document.newPage();document.add(img);}} catch (Exception e) {e.printStackTrace();} finally {try {ftp.logout();} catch (IOException e) {e.printStackTrace();}try {ftp.disconnect();} catch (IOException e) {e.printStackTrace();}if (document.isOpen()) {document.close();}}}

代码二、生成pdf直接发送到响应中

上方代码加入和替换此两行,请求添加 在游览器可以直接预览,页面调用打印方法
页面参数直接在后端取

 response.setContentType("application/pdf;charset=utf-8");PdfWriter.getInstance(document, response.getOutputStream());
<body>
<iframe style="display: none;" id="printIframe" src="/controllers/viewimagecontroller/printImageByPageIds.do"></iframe>
<script type="text/javascript">$(function () {doPrint();});//点击打印按钮,触发事件】function doPrint(){$("#printIframe")[0].contentWindow.print();}
</script>
</body>
http://www.lqws.cn/news/548821.html

相关文章:

  • Windows Server 2019 查询远程登录源 IP 地址(含 RDP 和网络登录)
  • 论云原生架构及应用
  • AcWing--数据结构(二)
  • clion配置旧的C项目为CMake项目工程
  • 生成树基础实验
  • 【C++】atoi和std::stoi
  • 本年度TOP5服装收银系统对比推荐
  • HTTPS hostname wrong: should be <xxx>错误解决
  • .小故事.
  • 基于DeepSeek搭建Dify智能助手国产化架构运行arm64
  • 【LeetCode】滑动窗口相关算法题
  • leetcode.2014 重复k次的最长子序列
  • Deformable Transformer 详解
  • 本地缓存Caffeine详解(含与Spring Cache集成)
  • Java 工程智能化升级:飞算科技重构软件开发的技术范式
  • 电子电气架构 --- 涵盖“诊断与 ECU 平台”领域特有项目要求(上)
  • go写前端打包的自动化工具
  • 图像分割模型中的空间信息、上下文信息、空间路径、上下文路径到底是什么?有什么作用?
  • 大事件项目记录5-用户接口开发-更新用户头像
  • 未来已来:Deepoc大模型驱动的人机智能革命
  • ELK监控jar
  • 电商数据开发实践:深度剖析1688商品详情 API 的技术与应用
  • java中对象可达性分析 + 自动回收算法
  • Linux基本指令篇 —— tac指令
  • 导出docker-compse.yml中docker镜像成tar文件
  • 麒麟系统使用-运用VSCode运行.NET工程
  • swift 对象转Json
  • 分布式系统ID生成方案深度解析:雪花算法 vs UUID vs 其他主流方案
  • Hyperledger Fabric 入门笔记(二十)Fabric V2.5 测试网络进阶之Tape性能测试
  • Ubuntu 20.04 系统上运行 SLAM卡顿是什么原因