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

word、excel、ppt转为PDF

相关引用对象在代码里了

相关依赖

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.1</version></dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.1</version>
</dependency>
<!-- word转pdf依赖包 -->
<dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.0.3</version>
</dependency>
<dependency><groupId>com.documents4j</groupId><artifactId>documents4j-transformer-msoffice-word</artifactId><version>1.0.3</version>
</dependency>
<!-- ppt转pdf,excel转pdf需要用5.2.0以上版本 -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.2.0</version></dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version>
</dependency>
<!-- excel转pdf字体使用 -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>

word转pdf

	import com.documents4j.api.DocumentType;import com.documents4j.api.IConverter;import com.documents4j.job.LocalConverter;import java.io.*;/*** 实现word转pdf** @param sourcePath 源文件地址 如 D:\\1.doc* @param targetPath 目标文件地址 如 D:\\1.pdf*/public static void wordToPdf(String sourcePath, String targetPath) {File inputWord = new File(sourcePath);File outputFile = new File(targetPath);try {InputStream docxInputStream = new FileInputStream(inputWord);OutputStream outputStream = new FileOutputStream(outputFile);IConverter converter = LocalConverter.builder().build();converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).schedule().get();outputStream.close();docxInputStream.close();log.info("转换完毕 targetPath = {}", outputFile.getAbsolutePath()+",targetPath = " + outputFile.getAbsolutePath());converter.shutDown();} catch (Exception e) {log.error("word转pdf失败:"+e.getMessage(), e);}}

ppt转pdf

	import com.itextpdf.text.*;import com.itextpdf.text.pdf.PdfPCell;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;import org.apache.poi.xslf.usermodel.*;import java.awt.*;import java.awt.Color;import java.awt.image.BufferedImage;import java.io.*;/*** ppt转为pdf* @param sourcePath 源文件地址 如 D:\\1.pptx* @param targetPath 目标文件地址 如 D:\\1.pdf*/public static void pptToPdf(String sourcePath,String targetPath) {Document document = null;XMLSlideShow slideShow = null;FileOutputStream fileOutputStream = null;PdfWriter pdfWriter = null;ByteArrayOutputStream baos = null;byte[] resBytes = null;try {baos=new ByteArrayOutputStream();//使用输入流pptx文件slideShow = new XMLSlideShow(new FileInputStream(new File(sourcePath)));//获取幻灯片的尺寸Dimension dimension = slideShow.getPageSize();//创建一个写内容的容器document = new Document(PageSize.A4, 72, 72, 72, 72);//使用输出流写入pdfWriter = PdfWriter.getInstance(document, baos);//使用之前必须打开document.open();pdfWriter.open();PdfPTable pdfPTable = new PdfPTable(1);//获取幻灯片java.util.List<XSLFSlide> slideList = slideShow.getSlides();for (int i = 0, row = slideList.size(); i < row; i++) {//获取每一页幻灯片XSLFSlide slide = slideList.get(i);for (XSLFShape shape : slide.getShapes()) {//判断是否是文本if(shape instanceof XSLFTextShape){// 设置字体, 解决中文乱码XSLFTextShape textShape = (XSLFTextShape) shape;for (XSLFTextParagraph textParagraph : textShape.getTextParagraphs()) {for (XSLFTextRun textRun : textParagraph.getTextRuns()) {textRun.setFontFamily("宋体");}}}}//根据幻灯片尺寸创建图形对象BufferedImage bufferedImage = new BufferedImage((int)dimension.getWidth(), (int)dimension.getHeight(), BufferedImage.TYPE_INT_RGB);Graphics2D graphics2d = bufferedImage.createGraphics();graphics2d.setPaint(Color.white);graphics2d.setFont(new java.awt.Font("宋体", java.awt.Font.PLAIN, 12));//把内容写入图形对象slide.draw(graphics2d);graphics2d.dispose();//封装到Image对象中com.itextpdf.text.Image image = com.itextpdf.text.Image.getInstance(bufferedImage, null);image.scalePercent(50f);// 写入单元格pdfPTable.addCell(new PdfPCell(image, true));document.add(image);}document.close();pdfWriter.close();resBytes = baos.toByteArray();FileOutputStream outputStream = new FileOutputStream(targetPath);outputStream.write(resBytes);outputStream.flush();outputStream.close();} catch (Exception e) {log.error("pptx转pdf异常:"+e.getMessage(),e);} finally {try {if (baos != null) {baos.close();}} catch (Exception e) {log.error("pptx转pdf关闭io流异常:"+e.getMessage(),e);}}}

excel转pdf

	import com.itextpdf.text.*;import com.itextpdf.text.Font;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfPCell;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;import lombok.SneakyThrows;import org.apache.poi.ss.usermodel.*;    /**** @param sourcePath 源文件地址 如 D:\\1.xlsx* @param targetPath 目标文件地址 如 D:\\1.pdf*/@SneakyThrowsprivate void excelToPdf(String sourcePath, String targetPath ){try (Workbook workbook = WorkbookFactory.create(new File(sourcePath));FileOutputStream fos = new FileOutputStream(targetPath )) {// 获取第一个工作表Sheet sheet = workbook.getSheetAt(0);// 创建PDF文档对象Document document = new Document(PageSize.A4, 50, 50, 50, 50);// 创建PDF输出流PdfWriter writer = PdfWriter.getInstance(document, fos);// 打开PDF文档document.open();// 创建PDF表格对象PdfPTable table = new PdfPTable(sheet.getRow(0).getLastCellNum());// 设置表格宽度table.setWidthPercentage(100);// 设置表格标题,Example Table为表格标题Paragraph title = new Paragraph("Example Table", new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 16, Font.BOLD));title.setAlignment(Element.ALIGN_CENTER);document.add(title);// 添加表格内容for (Row row : sheet) {for (Cell cell : row) {PdfPCell pdfCell = new PdfPCell(new Paragraph(cell.getStringCellValue(), new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 12)));pdfCell.setBorderWidth(1f);pdfCell.setHorizontalAlignment(Element.ALIGN_CENTER);pdfCell.setVerticalAlignment(Element.ALIGN_MIDDLE);table.addCell(pdfCell);}}// 添加表格到PDF文档document.add(table);// 关闭PDF文档document.close();} catch (IOException | DocumentException e) {e.printStackTrace();}}

相关文件参考:
word转pdf : https://gitee.com/wu_ze_wen/word_trans_pdf?_from=gitee_search
ppt转pdf : https://blog.csdn.net/qq_30436011/article/details/127737553?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-127737553-blog-127973320.235%5Ev38%5Epc_relevant_anti_t3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-127737553-blog-127973320.235%5Ev38%5Epc_relevant_anti_t3&utm_relevant_index=4

excel转pdf :
https://blog.csdn.net/sqL520lT/article/details/131430166
https://www.cnblogs.com/iyyy/p/9346935.html

相关文章:

word、excel、ppt转为PDF

相关引用对象在代码里了 相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.1</version></dependency> <dependency><groupId>org.apache.poi</group…...

2023华为杯D题——基于Kaya模型的碳排放达峰实证研究

一、前言 化石能源是推动现代经济增长的重要生产要素&#xff0c;经济生产活动与碳排放活动密切相关。充分认识经济增长与碳排放之间的关系对转变生产方式&#xff0c;确定碳达峰、碳中和路径极为必要。本研究在对经济增长与碳排放关系现有研究梳理的基础上&#xff0c;系统地分…...

有哪些好用的上网行为管理软件?(上网行为管理软件功能好的软件推荐)

随着互联网的快速发展&#xff0c;企业的信息化管理和员工的上网行为已经成为企业信息化建设的重要组成部分。上网行为管理软件作为一种新型的管理工具&#xff0c;可以帮助企业实现对员工上网行为的管控和优化&#xff0c;进而提高企业的工作效率和网络安全。本文将对多款市场…...

npm install报错 code:128

报的错误: npm ERR! code 128 npm ERR! An unknown git error occurred npm ERR! command git --no-replace-objects ls-remote ssh://gitgithub.com/nhn/raphael.git npm ERR! gitgithub.com: Permission denied (publickey). npm ERR! fatal: Could not read from remote re…...

爬虫 — Scrapy 框架(一)

目录 一、介绍1、同步与异步2、阻塞与非阻塞 二、工作流程三、项目结构1、安装2、项目文件夹2.1、方式一2.2、方式二 3、创建项目4、项目文件组成4.1、piders/__ init __.py4.2、spiders/demo.py4.3、__ init __.py4.4、items.py4.5、middlewares.py4.6、pipelines.py4.7、sett…...

Python编程语言学习笔记

目录 1 书写格式1.1 程序框架格式1.1 注释1.2 保留字 2 数据2.1 整数类型2.2 浮点类型2.3 复数类型2.4 数值运算符2.5 数值运函数2.6 数值类型转换函数2.7 math 库2.8 字符串2.8.1 字符串的表示2.8.2 字符串的区间访问2.8.3 字符串操作符2.8.4 字符串操作函数 2.9 字符串类型的…...

【运维面试100问】(三)说说你在故障排除方面的经历

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

Postman 全局配置接口路径变量等

Postman 全局配置接口路径变量等 一、简介 这里主要是介绍通过配置postman接口测试工具&#xff0c;简化每次新增模块等接口时修改url的繁琐过程&#xff0c;方便以后查阅&#xff01;&#xff01;&#xff01; 二、全局变量设置 1、新增测试环境 新增测试环境 2、接口集合设…...

一文掌握CodiMD安装与使用

简介&#xff1a;CodiMD 是一个基于 Markdown 语言的实时协作文档编辑器&#xff0c;它允许多个用户在同一个文档上进行实时编辑。CodiMD 的前身是 HackMD&#xff0c;但为了满足更开放的开源社区需求&#xff0c;CodiMD 作为其社区版本独立出来。 优势&#xff1a; 1. 开源且…...

无人机顶会顶刊2023

无人机顶会顶刊2023 国际期刊1、Science Robotics2、IEEE Transactions on Robotics(TRO)3、IEEE Transactions on Automation Science and Engineering&#xff08;TASE&#xff09;4、International Journal of Robotics Research(IJRR)5、IEEE Robotics and Automation Lett…...

【Java毕设项目】基于SpringBoot+Vue校园便利平台的设计与实现

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…...

03Nginx的静态资源部署,反向代理,负载均衡,动静分离的配置

Nginx具体应用 部署静态资源 Nginx相对于Tomcat处理静态资源的能力更加高效,所以在生产环境下一般都会将Nginx可以作为静态web服务器来部署静态资源 静态资源: 在服务端真实存在并且能够直接展示的一些html页面、css文件、js文件、图片、视频等资源文件将静态资源部署到Ngin…...

刷题笔记24——完全二叉树的节点个数

有些事情是不能告诉别人的,有些事情是不必告诉别人的,有些事情是根本没有办法告诉别人的,而且有些事情是,即使告诉了别人,你也会马上后悔的。——罗曼罗兰 222. 完全二叉树的节点个数 java的幂运算要 (int) Math.pow(2,l1)-1计算满二叉树的节点数量公式&#xff1a;2 ^ height…...

sentinel环境搭建以及微服务接入

• sentinel部署 • sentinel-镜像制造 • sentinel-镜像推送 • sentinel-部署配置文件 • 访问控制台 • 外网访问控制台 • 集群内访问 • 配置规则 • 限流效果 • 微服务接入 • pom文件引入依赖 • pod部署文件添加配置 Sentinel 控制台是流量控制、熔断降级规则统一配置…...

Klotski: Efficient Obfuscated Execution against Controlled-Channel Attacks

标题&#xff1a;Klotski: Efficient Obfuscated Execution against Controlled-Channel Attacks 作者&#xff1a;Pan Zhang,Chengyu Song,Heng Yin,Deqing Zou,Elaine Shi and Hai Jin 发布&#xff1a;ASPLOS【计算机体系结构顶会】 时间&#xff1a;2020 摘要 Intel Soft…...

阿里云无影云电脑角色AliyunServiceRoleForGws什么意思?

阿里云无影云电脑服务关联角色是指角色名称&#xff1a;AliyunServiceRoleForGws&#xff0c;并赋予角色权限策略&#xff1a;AliyunServiceRolePolicyForGws的过程&#xff0c;简单来说&#xff0c;就是允许无影云电脑服务访问您VPC、CEN和NAS中的资源&#xff0c;使用该权限查…...

操作系统--------调度算法篇

目录 一.先来先服务调度算法&#xff08;FCFS&#xff09; 二.短作业优先调度算法&#xff08;SJF&#xff09; 2.1.SJF调度算法缺点 三.优先级调度算法 3.1优先级调度算法的类型 1.非抢占优先级调度算法 2.抢占优先级调度算法 3.2优先级的类型 3.1静态优先级 3.2动态…...

宝塔composer 安装laravel依赖出现的问题

环境宝塔、PHP版本8.0.2、laravel9 问题1&#xff1a;PHP Fatal error: Uncaught Error: Call to undefined function Composer\XdebugHandler\putenv() 办法&#xff1a;把PHP版本disable_functions这个中的putenv去掉&#xff0c;这个意思就是putenv被PHP对应的版本禁用了&…...

OpenCV自学笔记二十四:支持向量机

在OpenCV中&#xff0c;支持向量机&#xff08;Support Vector Machine&#xff0c;简称SVM&#xff09;算法的实现包含在ml模块中。SVM是一种常用的监督学习算法&#xff0c;主要用于分类问题。 SVM的原理&#xff1a;通过在特征空间中找到一个最优超平面&#xff0c;将不同类…...

网络初识

一 IP 地址 概念: IP 地址主要用于表示网络主机、其他网络设备&#xff08;如路由器&#xff09;的网络地址。简单说&#xff0c;IP地址用于定位主机的网络地址 格式 IP 地址是一个32为的二进制数&#xff0c;通常被分割为4个“8位二进制数“&#xff08;也就是4个字节&…...

【离线无忧】PyAutoGUI内网环境高效安装指南

1. 为什么需要离线安装PyAutoGUI&#xff1f; 最近接手了一个自动化测试项目&#xff0c;需要在完全隔离的内网环境中部署PyAutoGUI。刚开始觉得这不过是个普通的Python包&#xff0c;直到发现服务器连pip都跑不通时才意识到问题的严重性。这种场景在企业开发中其实非常常见—…...

AI赋能React开发:让快马智能助手帮你设计和优化复杂组件逻辑

AI赋能React开发&#xff1a;让快马智能助手帮你设计和优化复杂组件逻辑 最近在开发一个电商网站时&#xff0c;遇到了一个常见的需求&#xff1a;实现一个侧边栏商品筛选组件。这个组件需要包含价格区间滑块、多品牌复选框和分类下拉选择三个主要功能。刚开始觉得这个需求挺简…...

使用PyTorch Lightning优化PETRV2-BEV模型训练流程

使用PyTorch Lightning优化PETRV2-BEV模型训练流程 如果你正在训练像PETRV2这样的BEV感知模型&#xff0c;可能已经体会过那种“一步一坑”的感觉。数据加载复杂、多GPU训练配置繁琐、日志记录混乱、实验难以复现……这些工程上的琐事&#xff0c;常常比模型本身更让人头疼。 …...

打破学术写作边界:NativeOverleaf离线工作流全解析

打破学术写作边界&#xff1a;NativeOverleaf离线工作流全解析 【免费下载链接】NativeOverleaf Next-level academia! Repository for the Native Overleaf project, attempting to integrate Overleaf with native OS features for macOS, Linux and Windows. 项目地址: ht…...

“title“: “Java全栈开发面试实录:从基础到实战的深度对话“,

{ "title": "Java全栈开发面试实录&#xff1a;从基础到实战的深度对话", "content": "# Java全栈开发面试实录&#xff1a;从基础到实战的深度对话\n\n## 一、开场白\n\n面试官&#xff1a;你好&#xff0c;欢迎来参加我们公司的Java全栈开…...

Python跑在浏览器里?揭秘2024最稳WASM部署方案:3大框架实测对比+性能压测数据

第一章&#xff1a;Python跑在浏览器里&#xff1f;揭秘2024最稳WASM部署方案&#xff1a;3大框架实测对比性能压测数据Python 从未真正“离开服务器”&#xff0c;但 2024 年&#xff0c;它已能以接近原生的速度在浏览器中执行——依托 WebAssembly&#xff08;WASM&#xff0…...

致开发者:别再重复造轮子,这个开源商城系统让你把时间花在刀刃上

作为开发者&#xff0c;你是否厌倦了每次新项目都要从零搭建电商后台&#xff1f;商品、订单、会员、营销……这些基础模块耗费了你多少宝贵的创造力&#xff1f;今天&#xff0c;我们想和你聊聊一个能让你“拿来即用&#xff0c;改也不难”的解决方案——CRMEB开源商城系统。它…...

从sipML5到现代框架:FreeSWITCH WebRTC客户端升级指南与选型建议

从sipML5到现代框架&#xff1a;FreeSWITCH WebRTC客户端升级指南与选型建议 如果你正在维护一个基于sipML5的FreeSWITCH WebRTC前端项目&#xff0c;可能已经感受到了技术债的压力——浏览器兼容性问题频发、功能扩展困难、社区支持几乎为零。这不是你的错&#xff0c;sipML5作…...

Gemma-3-12b-it实战教程:极简UI背后隐藏的12B模型内存映射优化策略

Gemma-3-12b-it实战教程&#xff1a;极简UI背后隐藏的12B模型内存映射优化策略 1. 项目概述 Gemma-3-12b-it是一款基于Google Gemma-3-12b-it大模型开发的本地多模态交互工具。这款工具针对12B大模型进行了全维度的CUDA性能优化&#xff0c;支持图片上传和文本提问的流式生成…...

轻量级OpenClaw监控:nanobot镜像运行状态仪表盘搭建

轻量级OpenClaw监控&#xff1a;nanobot镜像运行状态仪表盘搭建 1. 为什么需要监控OpenClaw运行状态 上周我在本地部署了基于nanobot镜像的OpenClaw环境&#xff0c;用来对接Qwen3-4B模型实现自动化办公。刚开始使用时一切顺利&#xff0c;直到某天早上发现OpenClaw服务已经停…...