Java 将 Excel 转换为 PDF 文件

简介: Java 将 Excel 转换为 PDF 文件

今天这是篇粗糙的文章,文字也较少,整理了个Java将Excel 转换为 PDF 文件的工具类。(还比较粗糙粗糙~)

用的是 asposepdfbox实现的。

aspose是没办法在公开的Maven仓库下载的。得去它官网下载,或者是去互联网上搜一搜~

获取 Aspose

官网地址:aspose

我是在网上冲浪拿到的~ ,有需求的私我就好~

其中里面的 license.xml 文件,是参考下面文章获得:

Java操作excel转pdf工具类 👈这篇文章中的代码是失败的,我帮你验证了...

 <License>
   <Data>
     <Products>
       <Product>Aspose.Total for Java</Product>
       <Product>Aspose.Words for Java</Product>
     </Products>
     <EditionType>Enterprise</EditionType>
     <SubscriptionExpiry>20991231</SubscriptionExpiry>
     <LicenseExpiry>20991231</LicenseExpiry>
     <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
   </Data>
   <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
 </License>

如果不加这个license,在PDF文件的顶部会出现水印~

工具类的实现

导入相关依赖:

 <dependencies>
     <dependency>
         <groupId>com.lowagie</groupId>
         <artifactId>itext</artifactId>
         <version>2.1.7</version>
     </dependency>
     <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
     <dependency>
         <groupId>org.apache.pdfbox</groupId>
         <artifactId>pdfbox</artifactId>
         <version>2.0.24</version>
     </dependency>
     <dependency>
         <groupId>com.aspose</groupId>
         <artifactId>aspose-cells</artifactId>
         <version>8.6.2</version>
     </dependency>
 </dependencies>

注意:此处的aspose-cells是由我手动放入我本地的Maven仓库后,再手动导入至项目中的。

image.png

不知道怎么手动导入Jar的小伙伴,互联网冲浪一下即可~

编写代码~

 package com.utils;
 ​
 import com.aspose.cells.License;
 import com.aspose.cells.PdfCompliance;
 import com.aspose.cells.PdfSaveOptions;
 import com.aspose.cells.Workbook;
 import org.apache.pdfbox.pdmodel.PDDocument;
 ​
 ​
 import java.io.*;
 import java.util.List;
 ​
 public class ExcelToPdf {
 ​
     private static License asposeLic;
 ​
     public static void main(String[] args) throws IOException {
         //convertPDFImage("d:\demo.xls", null);
         // 直接在相同目录输出pdf文件
         ExcelToPdf.convertPDF("E:\456.xlsx");
     }
 ​
     public static String convertPDF(String excelFileName) {
         return convertPDF(false, excelFileName);
     }
 ​
     /**
      * 是否每页大小自适应(超页不分页)
      *
      * @param onePagePerSheet excel每sheet页生成一页pad
      * @param excelFileName excel 文件
      * @return pdf
      */
     public static String convertPDF(boolean onePagePerSheet, String excelFileName) {
         String pdfFileName = "";
         PDDocument pdfDocument = null;
         try {
             Workbook workbook = new Workbook(excelFileName);
             getLicense();
             PdfSaveOptions saveOptions = new PdfSaveOptions();
             saveOptions.setCompliance(PdfCompliance.PDF_A_1_B);
             saveOptions.setOnePagePerSheet(onePagePerSheet);
             pdfFileName = excelFileName.substring(0, excelFileName.lastIndexOf(".")) + ".pdf";
             workbook.save(pdfFileName, saveOptions);
             pdfDocument = PDDocument.load(new File(pdfFileName));
             // Output file name
             pdfDocument.save(pdfFileName);
             editPDF(pdfFileName);
         } catch (Exception e) {
             e.printStackTrace();
         }finally  {
             if (pdfDocument != null) {
                 try {
                     pdfDocument.close();
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
             }
         }
         return pdfFileName;
     }
 ​
     /**
      * 获取license
      *
      * @return
      */
     public static boolean getLicense() {
         boolean result = false;
         InputStream license = null;
         try {
             license = ExcelToPdf.class.getClassLoader().getResourceAsStream("\license.xml");
             asposeLic = new License();
             asposeLic.setLicense(license);
             result = true;
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             try {
                 if (license != null) {
                     license.close();
                 }
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
         return result;
     }
 ​
     public static boolean delete(String strFileName) {
         File fileDelete = new File(strFileName);
 ​
         if (!fileDelete.exists() || !fileDelete.isFile()) {
             System.out.println("错误: " + strFileName + "不存在!");
             return false;
         }
 ​
         return fileDelete.delete();
     }
 ​
 }

测试结果:

测试控制台是没有输出的,只要正常结束就表示成功了。

image.png


后续的扩展还没有想好~,还可以使excel转成图片,也可以输出到浏览器。

今天只是个开端~

后记

今天就写到了这里啦~ 感觉自己还好菜啊~ 一起努力哦~

希望你是满载而归的~


目录
相关文章
|
10天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
38 2
|
21天前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
88 5
|
14天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
35 2
|
21天前
|
Java API Apache
|
23天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
24天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
33 4
|
27天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
27天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
1月前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
1月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
211 1
下一篇
无影云桌面