当前位置: 首页 > 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.xdnf.cn/news/1070947.html

相关文章:

  • lxd 容器内的深度学习服务器环境配置
  • sql server 将nvarchar长度设置成max有什么隐患
  • VSCode中创建和生成动态库项目
  • 时序数据库全面解析与对比
  • TCP/IP协议简要概述
  • 小型软件开发的三重境界:从混沌编码到结构化设计
  • Stable Diffusion入门-ControlNet 深入理解 第二课:ControlNet模型揭秘与使用技巧
  • 基于残差神经网络的垃圾分类
  • Maven生命周期与阶段扩展深度解析
  • 嵌入式项目:基于QT与Hi3861的物联网智能大棚集成控制系统
  • jenkins中执行python脚本导入路径错误
  • Chrome浏览器访问https提示“您的连接不是私密连接”问题解决方案
  • 【C++特殊工具与技术】固有的不可移植的特性(3)::extern“C“
  • 力扣第455场周赛
  • MATLAB 4D作图
  • Hyperledger Fabric 入门笔记(二十)Fabric V2.5 测试网络进阶之Tape性能测试
  • OpenCV模版匹配方法的衡量指标比较
  • 修复opensuse 风滚草rabbitmq的Error: :plugins_dir_does_not_exist问题
  • 【STM32】外部中断
  • 【Linux】基础开发工具(2)
  • java枚举enum的使用示例
  • 大厂测开实习和小厂开发实习怎么选
  • Java设计模式->责任链模式的介绍
  • [AI]从0到1通过神经网络训练模型
  • python+requests接口自动化测试
  • 《规则怪谈》合集
  • [特殊字符]️ 用 Python 绘制专业风玫瑰图:从气象数据到可视化的全流程指南
  • vscode ssh远程连接到Linux并实现免密码登录
  • Apipost和Postman对比
  • 缓存与加速技术实践-MongoDB数据库应用