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转成图片,也可以输出到浏览器。

今天只是个开端~

后记

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

希望你是满载而归的~


目录
相关文章
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
79 9
|
3天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
45 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
15天前
|
人工智能 文字识别 数据挖掘
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
MarkItDown 是微软开源的多功能文档转换工具,支持将 PDF、PPT、Word、Excel、图像、音频等多种格式的文件转换为 Markdown 格式,具备 OCR 文字识别、语音转文字和元数据提取等功能。
104 9
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
|
24天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
86 34
|
30天前
|
Python
按条件将Excel文件拆分到不同的工作表
使用Python的pandas库,可以轻松将Excel文件按条件拆分到不同的工作表中。本文通过一个示例代码展示了如何生成一个包含总成绩表和三个班级表的Excel文件。代码首先创建了一个包含学生姓名、班级和各科成绩的数据框,然后按班级分组,将每个班级的数据分别写入不同的工作表。最后,生成的Excel文件将包含四个工作表,分别为总成绩表和三个班级的成绩表。
31 6
按条件将Excel文件拆分到不同的工作表
|
18天前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
48 16
|
29天前
|
Python
批量将不同的工作簿合并到同一个Excel文件
本文介绍如何使用Python的`pandas`库批量合并不同工作簿至同一Excel文件。通过模拟生成三个班级的成绩数据,分别保存为Excel文件,再将这些文件合并成一个包含所有班级成绩的总成绩单。步骤包括安装必要库、生成数据、保存与合并工作簿。
39 6
|
29天前
|
Python
按条件将Excel文件拆分到不同的工作表
使用Python的pandas库,可以轻松将Excel文件按条件拆分为多个工作表。本文通过一个具体示例,展示了如何根据学生班级将成绩数据拆分到不同的工作表中,并生成一个包含总成绩表和各班级成绩表的Excel文件。代码简洁明了,适合初学者学习和应用。
39 6
|
2月前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
32 1
|
2月前
|
Java BI API
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
73 6