使用Aspose技能将Excel/Word转换为PDF

打印 上一主题 下一主题

主题 686|帖子 686|积分 2058

简介:本文将介绍如何使用Aspose技能将Excel文件转换为PDF格式。我们将使用Aspose-Cells-8.5.2.jar包,并演示Java代码以及举行测试。
一、Aspose技能概述

Aspose是一款强盛的文档处理惩罚库,支持多种编程语言,如Java、C#、Python等。它提供了丰富的功能,可以轻松地实现各种文档格式之间的转换,包罗Word、Excel、PowerPoint、PDF等。在本文中,我们将重点关注如何使用Aspose技能将Excel以及Word文件转换为PDF格式。
二、准备环境

2.1 Excel

要使用Aspose技能,起首需要下载并安装Aspose-Cells-8.5.2.jar包。您可以从Aspose官方网站免费下载这个库。也可以听过下面的maven坐标引入对应的依赖信息。
  1. <dependency>
  2.     <groupId>com.aspose</groupId>
  3.     <artifactId>aspose-cells</artifactId>
  4.     <version>8.5.2</version>
  5. </dependency>
复制代码
2.2 Word

要使用Aspose技能,起首需要下载并安装Aspose-words-15.8.0.jar包。您可以从Aspose官方网站免费下载这个库。也可以听过下面的maven坐标引入对应的依赖信息。
  1. <dependency>
  2.     <groupId>com.aspose</groupId>
  3.     <artifactId>aspose-words</artifactId>
  4.     <version>15.8.0</version>
  5. </dependency>
复制代码
三、代码示例

3.1 excel-license.xml

注意:使用前,然后把excel-license.xml放在resources目次下,xml代码如下所示:
  1. <License>
  2.   <Data>
  3.     <Products>
  4.       <Product>Aspose.Total for Java</Product>
  5.       <Product>Aspose.Words for Java</Product>
  6.     </Products>
  7.     <EditionType>Enterprise</EditionType>
  8.     <SubscriptionExpiry>20991231</SubscriptionExpiry>
  9.     <LicenseExpiry>20991231</LicenseExpiry>
  10.     <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
  11.   </Data>
  12.   <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
  13. </License>
复制代码
3.2 word-license.xml

注意:使用前,然后把excel-license.xml放在resources目次下,xml代码如下所示:
  1. <License>
  2.     <Data>
  3.         <Products>
  4.             <Product>Aspose.Total for Java</Product>
  5.             <Product>Aspose.Words for Java</Product>
  6.         </Products>
  7.         <EditionType>Enterprise</EditionType>
  8.         <SubscriptionExpiry>20991231</SubscriptionExpiry>
  9.         <LicenseExpiry>20991231</LicenseExpiry>
  10.         <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
  11.     </Data>
  12.     <Signature>
  13.       sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=
  14.     </Signature>
  15. </License>
复制代码
接下来,我们将编写一个简朴的Java程序,用于将Excel文件转换为PDF文件。以下是完备的Java代码示例:
3.2 PdfUtil工具类

  1. public class Excel2PdfUtil {
  2.     /**
  3.      * excel 转 pdf
  4.      *
  5.      * @param excelFilePath excel文件路径
  6.      */
  7.     public static void excel2pdf(String excelFilePath) {
  8.         excel2pdf(excelFilePath, null, null);
  9.     }
  10.     /**
  11.      * excel 转 pdf
  12.      *
  13.      * @param excelFilePath excel文件路径
  14.      * @param convertSheets 需要转换的sheet
  15.      */
  16.     public static void excel2pdf(String excelFilePath, int[] convertSheets) {
  17.         excel2pdf(excelFilePath, null, convertSheets);
  18.     }
  19.     /**
  20.      * excel 转 pdf
  21.      *
  22.      * @param excelFilePath excel文件路径
  23.      * @param pdfFilePath   pdf文件路径
  24.      */
  25.     public static void excel2pdf(String excelFilePath, String pdfFilePath) {
  26.         excel2pdf(excelFilePath, pdfFilePath, null);
  27.     }
  28.     /**
  29.      * excel 转 pdf
  30.      *
  31.      * @param excelFilePath excel文件路径
  32.      * @param pdfFilePath   pdf文件路径
  33.      * @param convertSheets 需要转换的sheet
  34.      */
  35.     public static void excel2pdf(String excelFilePath, String pdfFilePath, int[] convertSheets) {
  36.         try {
  37.             pdfFilePath = pdfFilePath == null ? getPdfFilePath(excelFilePath) : pdfFilePath;
  38.             // 验证 License
  39.             getLicense();
  40.             Workbook wb = new Workbook(excelFilePath);
  41.             FileOutputStream fileOS = new FileOutputStream(pdfFilePath);
  42.             PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
  43.             pdfSaveOptions.setOnePagePerSheet(true);
  44.             if (null != convertSheets) {
  45.                 printSheetPage(wb, convertSheets);
  46.             }
  47.             wb.save(fileOS, pdfSaveOptions);
  48.             fileOS.flush();
  49.             fileOS.close();
  50.             System.out.println("convert success");
  51.         } catch (Exception e) {
  52.             System.out.println("convert failed");
  53.             e.printStackTrace();
  54.         }
  55.     }
  56.     /**
  57.      * 获取 生成的 pdf 文件路径,默认与源文件同一目录
  58.      *
  59.      * @param excelFilePath excel文件
  60.      * @return 生成的 pdf 文件
  61.      */
  62.     private static String getPdfFilePath(String excelFilePath) {
  63.         return excelFilePath.split(".")[0] + ".pdf";
  64.     }
  65.     /**
  66.      * 获取 license 去除水印
  67.      * 若不验证则转化出的pdf文档会有水印产生
  68.      */
  69.     private static void getLicense() {
  70.         String licenseFilePath = "excel-license.xml";
  71.         try {
  72.             InputStream is = PdfUtil.class.getClassLoader().getResourceAsStream(licenseFilePath);
  73.             License license = new License();
  74.             license.setLicense(is);
  75.         } catch (Exception e) {
  76.             System.out.println("license verify failed");
  77.             e.printStackTrace();
  78.         }
  79.     }
  80.     /**
  81.      * 隐藏workbook中不需要的sheet页。
  82.      *
  83.      * @param sheets 显示页的sheet数组
  84.      */
  85.     private static void printSheetPage(Workbook wb, int[] sheets) {
  86.         for (int i = 1; i < wb.getWorksheets().getCount(); i++) {
  87.             wb.getWorksheets().get(i).setVisible(false);
  88.         }
  89.         if (null == sheets || sheets.length == 0) {
  90.             wb.getWorksheets().get(0).setVisible(true);
  91.         } else {
  92.             for (int i = 0; i < sheets.length; i++) {
  93.                 wb.getWorksheets().get(i).setVisible(true);
  94.             }
  95.         }
  96.     }
  97. }
复制代码
3.3 Excel测试

在我们的resources文件夹下新建一个test文件夹,文件夹放入咱的excel文件
  1. public class TestExcel2Pdf {
  2.     public static void main(String[] args) {
  3.         String srcFilePath = "/test/excel数据.xlsx";
  4.         Excel2PdfUtil.excel2pdf(srcFilePath);
  5.     }
  6. }
复制代码
测试效果:

转换成对应的PDF,几乎一模一样,如下图所示:

3.4 下面贴上Word的代码

工具类:
  1. @Slf4j
  2. public class Doc2PdfUtil {
  3.     /**
  4.      * 获取 license 去除水印
  5.      * 若不验证则转化出的pdf文档会有水印产生
  6.      */
  7.     private static void getLicense() {
  8.         String licenseFilePath = "word-license.xml";
  9.         try {
  10.             InputStream is = DocUtil.class.getClassLoader().getResourceAsStream(licenseFilePath);
  11.             License license = new License();
  12.             license.setLicense(Objects.requireNonNull(is));
  13.         } catch (Exception e) {
  14.             log.error("license verify failed");
  15.             e.printStackTrace();
  16.         }
  17.     }
  18.     /**
  19.      * word 转 pdf
  20.      * @param wordFile word 文件路径
  21.      * @param pdfFile  生成的 pdf 文件路径
  22.      */
  23.     public static void word2Pdf(String wordFile, String pdfFile) {
  24.         File file = new File(pdfFile);
  25.         if (!file.getParentFile().exists()) {
  26.             file.getParentFile().mkdir();
  27.         }
  28.         getLicense();
  29.         try (FileOutputStream os = new FileOutputStream(new File(pdfFile))) {
  30.             Document doc = new Document(wordFile);
  31.             doc.save(os, SaveFormat.PDF);
  32.         } catch (Exception e) {
  33.             log.error("word转pdf失败", e);
  34.             e.printStackTrace();
  35.         }
  36.     }
  37. }
复制代码
测试类:
  1. public class TestWord2Pdf {
  2.     public static void main(String[] args) {
  3.         String docFilePath = "/test/word数据.doc";
  4.         String pdfFilePath = "/test/转换pdf数据.pdf";
  5.         Doc2PdfUtil.word2Pdf(docFilePath, pdfFilePath);
  6.     }
  7. }
复制代码
四、总结

通过本文的介绍,您应该已经了解了如何使用Aspose技能将Excel、Word文件转换为PDF格式。本文只是讲解了使用Apose技能举行转换成PDF,其实该技能能够做的事情还有许多,可以轻松地实现各种文档格式之间的转换。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表