aspose.pdf实现图片转pdf

news/2024/9/18 20:53:41/ 标签: pdf, aspose, java, dotnet
java">/*** 图片转pdf*/
public static void ImagesToPdf(){String folderPath = "D:\\Desktop\\xuanku";File folder = new File(folderPath);List<String> images = new ArrayList<>();// 检查文件夹是否存在if (folder.exists() && folder.isDirectory()) {// 获取文件夹下的所有文件和文件夹File[] listOfFiles = folder.listFiles();// 遍历文件和文件夹for (File file : listOfFiles) {// 如果是文件并且文件名以.jpg结尾if (file.isFile() && file.getName().endsWith(".png") || file.getName().endsWith(".PNG")) {images.add(file.getAbsolutePath());}}} else {System.out.println("文件夹不存在或不是一个目录");return;}// 使用自定义的Comparator对图片名称进行排序Collections.sort(images, new Comparator<String>() {@Overridepublic int compare(String s1, String s2) {// 提取两个字符串中的数字部分String num1 = s1.replaceAll("\\D+", "");String num2 = s2.replaceAll("\\D+", "");// 将字符串转换为整数进行比较return Integer.compare(Integer.parseInt(num1), Integer.parseInt(num2));}});//创建一个Pdf文档实例com.aspose.pdf.Document pdfDoc  = new com.aspose.pdf.Document();// 遍历图片路径for (String  imagePath: images) {//System.out.println(imagePath);try {com.aspose.pdf.Page page = pdfDoc.getPages().add();page.setPageSize(com.aspose.pdf.PageSize.getA4().getWidth(), com.aspose.pdf.PageSize.getA4().getHeight());// 创建Image对象,命名空间是必要的,因为在别的命名空间也有Image类
//                com.aspose.pdf.Image pdfImage = new com.aspose.pdf.Image();
//                pdfImage.setFile(imagePath);// 读取图片文件BufferedImage image = ImageIO.read(new File(imagePath));float imageWidth = image.getWidth();float imageHeight = image.getHeight();float scaleWidth = com.aspose.pdf.PageSize.getA4().getWidth() / imageWidth;float scaleHeight = com.aspose.pdf.PageSize.getA4().getHeight() / imageHeight;float scaleFactor = Math.min(scaleWidth, scaleHeight);// 创建一个Aspose.PDF的图片对象,并调整大小com.aspose.pdf.Image pdfImage = new com.aspose.pdf.Image();pdfImage.setFile(imagePath);pdfImage.setImageScale(scaleFactor);page.getParagraphs().add(pdfImage);} catch (Exception e) {e.printStackTrace();}}// 保存PDF文档try {pdfDoc.save("D:\\Desktop\\xuanku\\output2.pdf");System.out.println("PDF文件已保存。");} catch (Exception e) {e.printStackTrace();}
}

http://www.ppmy.cn/news/1518089.html

相关文章

【论文速读】| ARVO: 开源软件可重现漏洞的全景图

本次分享论文&#xff1a;ARVO: Atlas of Reproducible Vulnerabilities for Open Source Software 基本信息 原文作者&#xff1a;Xiang Mei, Pulkit Singh Singaria, Jordi Del Castillo, Haoran Xi, Abdelouahab (Habs) Benchikh, Tiffany Bao, Ruoyu Wang, Yan Shoshitai…

js基础速成-条件语句

条件语句 条件语句用于根据不同的条件做出决策。 默认情况下&#xff0c;JavaScript 中的语句是从上到下顺序执行的。如果处理逻辑需要&#xff0c;可以通过两种方式改变执行的顺序&#xff1a; 条件执行&#xff1a;如果某个表达式为真&#xff0c;将执行一个或多个语句的代…

一起搭WPF之列表数据绑定

一起搭WPF之列表数据绑定 1 前言2 数据绑定2.1 前端2.2 后端实现2.2.1 界面后台2.2.2 模型与逻辑 3 问题3.2 解决 总结 1 前言 之前已经简单介绍了列表的大致设计&#xff0c;在设计完列表界面后&#xff0c;我们可以开展列表的数据绑定&#xff0c;在前端显示我们的数据&…

房产报备小程序房产报备系统源码搭建方案

房产客户报备小程序开发&#xff0c;php开发语言&#xff0c;前端是uniapp。 房产报备小程序三个端&#xff1a;报备端&#xff08;经纪人报备客户&#xff09;&#xff0c;确客端&#xff08;员工确认报备的客户&#xff09;&#xff0c;管理后台 一 报备端 经纪人报备客户…

特异性心肌细胞靶向肽(PCM);WLSEAGPVVTVRALRGTGSW;CAS:771479-86-8

【特异性心肌细胞靶向肽(PCM) 简介】 特异性心肌细胞靶向肽&#xff08;PCM&#xff09;是一种设计用于识别和结合心肌细胞特有的受体或分子标记的多肽序列。PCM可以通过其氨基酸序列的特定配置和表面特性实现对心肌细胞的选择性靶向&#xff0c;从而在心脏病治疗中递送药物、作…

Linux文件编程(进阶)

文章目录 Linux文件编程内核数据结构重定向dup2函数代码示例&#xff1a;将定义为输入重定向符号&#xff0c;将-定义为输出重定向符号 fcntl函数代码示例&#xff1a;使用O_APPEND标志位保证原子操作 I/O处理方式代码示例&#xff1a;阻塞I/O模型代码示例&#xff1a;非阻塞I/…

Nosql数据库redis集群配置详解

一、Redis的安装 环境介绍&#xff1a; 一主双从&#xff1a;10&#xff08;redis-node1&#xff09;主&#xff0c;20&#xff08;redis-node2&#xff09; 30&#xff08;redis-node3&#xff09;从——使用的是红帽9.1系统 源码安装redis [rootredis-node1 ~]# tar zxf red…

Ceruletide 雨蛙素;雨蛙肽;硫酸化蓝肽 简介

目录号 M9316 Ceruletide 雨蛙素&#xff1b;雨蛙肽&#xff1b;硫酸化蓝肽 Ceruletide (Caerulein) 是从澳大利亚青蛙皮肤中分离的生物活性十肽&#xff0c;是一种缩胆囊素受体 (cholecystokinin receptor) 激动剂。此外&#xff0c;Ceruletide还可用于构建小鼠急性胰腺炎模型…

强烈推荐!大模型辅助软件开发

图书推荐 作者介绍 很喜欢作者在书上的这句话了&#xff1a;是人类工程师的能力&#xff0c;而不是大模型的能力&#xff0c;决定了大模型协作式开发的上限。 本书内容 软件开发正在经历一场前所未有的范式变革。人工智能的飞速发展&#xff0c;特别是大型语言模型所取得的成…

tortoisegit突然停止工作

TortoiseGit突然停止工作可能由多种原因引起&#xff0c;以下是一些可能的原因及相应的解决方案&#xff1a; 可能原因及解决方案 Git进程冲突 描述&#xff1a;当TortoiseGit检测到有其他Git进程正在运行或之前崩溃未清理完全时&#xff0c;可能会出现冲突&#xff0c;导致T…

鸿蒙开发5.0【基于Swiper的页面布局】

场景一&#xff1a;Swiper页面支持自定义动画 方案&#xff1a; 给Swiper组件设置.nextMargin(50).prevMargin(50)属性。 给Swiper组件添加onChange事件&#xff0c;设置当前this.currentIndexindex&#xff0c;当currentIndex为首页或者尾页时&#xff0c;设置上一张以及下一…

黑马JavaWeb开发笔记10(前端完结)——Vue路由介绍入门、前端工程打包、nginx前端部署

文章目录 前言一、Vue路由1. 介绍2. 路由入门 二、打包部署1. 前端工程打包2. 部署前端工程2.1 nginx介绍2.2 部署 总结 前言 本篇文章是2023年最新黑马JavaWeb开发笔记10&#xff1a;Vue路由介绍&入门、前端工程打包、nginx前端部署的总结&#xff0c;帮助需要学习Web开发…

Python自动化测试requests库深度详解

前言 发送HTTP请求 import requests# 登录的接口地址url http://............/login# 登录的参数params {"mobile_phone": 18300000000,"pwd": 12345678}# 请求头headers {X-Lemonban-Media-Type: lemonban.v2}# 发送登录请求# 请求类型为 Content-Typ…

(二十)Flink Paimon

数据湖、湖仓一体是当前大数据领域技术发展的重要趋势。近几年开源数据湖技术如 Apache Hudi、Apache Iceberg、Apache Paimon、DeltaLake 等不断涌现,基于湖仓一体架构的统一元数据管理、数据治理也越来越受到关注。从传统数仓到数据湖、湖仓一体架构,从流批一体计算到基于数…

YOLOv9改进策略【损失函数篇】| 利用MPDIoU,加强边界框回归的准确性

一、背景 目标检测和实例分割中的关键问题&#xff1a; 现有的大多数边界框回归损失函数在不同的预测结果下可能具有相同的值&#xff0c;这降低了边界框回归的收敛速度和准确性。 现有损失函数的不足&#xff1a; 现有的基于 ℓ n \ell_n ℓn​范数的损失函数简单但对各种尺度…

python学习10-机器学习了解

AI(Artificial Intelligence)是最广泛的概念&#xff0c;是让机器拥有人和组织的能力&#xff0c;执行复杂的任务。下面分为机器人、语言处理、机器学习、深度学习等。机器学习是人工智能的一个子领域&#xff0c;它关注的是如何让计算机通过大量的数据自动学习和训练来对人的能…

git 项目可以拉取提交不了

记一次项目成员git提交异常 问题 Enumerating objects: 9, done. Counting objects: 100% (9/9), done. Delta compression using up to 8 threads Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 418 bytes | 418.00 KiB/s, done. Total 5 (delta 4)…

Android APK打包脚本

build.gradle版本 同目录创建config.gradle文件写入需要的信息入 config.gradle文件内容 ext { /*** 自定义APP运行环境* dev: 开发* test: 测试* pro: 生产*/ env "pro" /*** 动态参数配置&#xff0c;根据自己需要添加参数* APP_ID: 包名* VERSION_CODE: 版本号…

实时数仓,站上产业潮头

在这场新的数据驱动战场里&#xff0c;谁能更好的对数据进行智能、准确、迅速、高性价比的体系化处理&#xff0c;谁能以更低的成本、更高效的能力构建底层的PaaS、IaaS组件&#xff0c;谁就能在如今的市场竞争中构建更具竞争力的业务模型&#xff0c;成为新的弄潮儿。 对Byt…

Incremental Text-to-Speech

ITTS&#xff08;Incremental Text-to-Speech&#xff0c;增量式文本到语音&#xff09;模型是一种在文本到语音&#xff08;TTS&#xff09;转换中逐步生成语音的技术。与传统的整句TTS系统不同&#xff0c;ITTS模型能够根据部分语境&#xff08;即当前词汇以及前面已经观察到…