Java中Aspose组件进行多文档间的转换方法总结

 更新时间:2019年02月22日 11:10:18   作者:顾东城  
在本篇文章里我们给大家分享了关于Java中Aspose组件进行多文档间的转换方法内容,需要的朋友们学习下吧。

什么是Aspose?

Aspose.Total是Aspose公司旗下的最全的一套office文档管理方案,主要提供.net跟java两个开发语言的控件套包,通过它,我们可以有计划地操纵一些商业中最流行的文件格式:Word, Excel, PowerPoint, Project,等office文档以及PDF文档。 除了强大的文件操纵组件之外,Aspose.Total 还提供了用于制图、写电子邮件、拼写检查、创建条形码、生成ad hoc 查询、重现格式以及工作流等组件,运用它我们可以整理一个完整的文档管理方案。

包含的功能:

Aspose.Word:

Aspose.Words是一款先进的类库,通过它可以直接在各个应用程序中执行各种文档处理任务。Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocument, PDF, XPS, EPUB和其他格式。使用Aspose.Words,您可以生成,更改,转换,渲染和打印文档而不使用Microsoft Word。

Aspose.Cell:

Aspose.Cells是一个广受赞誉的电子表格组件,支持所有Excel格式类型的操作,用户无需依靠Microsoft Excel也可为其应用程序嵌入读写和处理Excel数据表格的功能。Aspose.Cells可以导入和导出每一个具体的数据,表格和格式,在各个层面导入图像,应用复杂的计算公式,并将Excel的数据保存为各种格式等等---完成所有的这一切功能都无需使用Microsoft Excel 和Microsoft Office Automation。

Aspose.PDF:

Aspose.Pdf是一个PDF文档创建组件,可以帮助用户无需使用Adobe Acrobat 即可读写和操作PDF文件。Aspose.Pdf丰富功能:PDF文档压缩选项,表格创建与操作,图表支持,图像功能,丰富的超链接功能,扩展的安全性组件以及自定义字体处理。

Aspose.BarCode:

Aspose.BarCode是一个功能强大,且稳健的条形码生成和识别组件。

Aspose.Slide:

Aspose.Slides是一个独特的可用于PowerPoint管理的控件,用户无需使用Microsoft PowerPoint即可在应用程序中对Microsoft PowerPoint文件进行读写以及操作。Aspose.Slides是第一个能在用户的应用程序中对PowerPoint文档进行管理的组件。

Aspose.Task:

Aspose.Tasks 是一个非图形的.NET 项目管理组件,使.NET应用程序可以阅读以及撰写、管理项目文档时无须使用Microsoft Project。使用Aspose.Tasks 你可以阅读和改变任务,重现任务,资源,资源分配,关系和日历。Aspose.Tasks 是一个提供稳定性和灵活性的非常成熟的产品。

我们今天重点讲解的是前面3个,Aspose.Words、Aspose.Cells、Aspose.Pdf,利用这三个组件分别实现Word转Pdf、Excel转Pdf、以及多个Pdf合并为一个Pdf的功能,下面上干货。

Jar包及License获取方式:

链接:https://pan.baidu.com/s/1PwtvfPGLu1MIpMLNHKHTmg

提取码:5la1

import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.InputStream;

/**
 * Created with IntelliJ IDEA
 * Created By 顾东城
 * Date: 2019/2/21
 * Time: 14:01
 * Desc: 使用Aspose.Words将word文件转换为pdf文件
 */
public class AsposeWordTest {

 /**
 * 获取license
 *
 * @return
 */
 private static boolean getLicense() {
 boolean result = false;
 try {
  // 凭证
  String license =
   "<License>\n" +
    " <Data>\n" +
    " <Products>\n" +
    " <Product>Aspose.Total for Java</Product>\n" +
    " <Product>Aspose.Words for Java</Product>\n" +
    " </Products>\n" +
    " <EditionType>Enterprise</EditionType>\n" +
    " <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
    " <LicenseExpiry>20991231</LicenseExpiry>\n" +
    " <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
    " </Data>\n" +
    " <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +
    "</License>";
  InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8"));
  License asposeLic = new License();
  asposeLic.setLicense(is);
  result = true;
 } catch (Exception e) {
  e.printStackTrace();
 }
 return result;
 }

 /**
 * word 转 pdf
 * @param docPath 要转换的word文件路径
 * @param pdfPath 转换完成后输出的pdf文件路径
 */
 public static void doc2pdf(String docPath,String pdfPath) {
 if (!getLicense()) {
  return;
 }

 try {
  Document convertDoc = new Document(new FileInputStream(docPath));
  convertDoc.save(pdfPath, SaveFormat.PDF);
 } catch (Exception e) {
  e.printStackTrace();
 }
 }

 public static void main(String[] args) {
 //在硬盘直接创建一个空白pdf即可
 AsposeWordTest.doc2pdf("H:/test.docx","H:/testDoc.pdf");
 }

}
import com.aspose.cells.License;
import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.InputStream;

/**
 * Created with IntelliJ IDEA
 * Created By 顾东城
 * Date: 2019/2/22
 * Time: 9:01
 * Desc: 使用Aspose.Cells将excel文件转换为pdf文件
 */
public class AsposeCellTest {
 /**
 * 获取license
 *
 * @return
 */
 private static boolean getLicense() {
 boolean result = false;
 try {
  // 凭证
  String license =
   "<License>\n" +
    " <Data>\n" +
    " <Products>\n" +
    " <Product>Aspose.Total for Java</Product>\n" +
    " <Product>Aspose.Words for Java</Product>\n" +
    " </Products>\n" +
    " <EditionType>Enterprise</EditionType>\n" +
    " <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
    " <LicenseExpiry>20991231</LicenseExpiry>\n" +
    " <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
    " </Data>\n" +
    " <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +
    "</License>";
  InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8"));
  License asposeLic = new License();
  asposeLic.setLicense(is);
  result = true;
 } catch (Exception e) {
  e.printStackTrace();
 }
 return result;
 }

 /**
 * excel 转 pdf
 * @param excelPath 要转换的excel文件路径
 * @param pdfPath 转换完成后输出的pdf文件路径
 */
 public static void excel2pdf(String excelPath,String pdfPath) {
 if (!getLicense()) {
  return;
 }
 try {
  Workbook convertExcel = new Workbook(new FileInputStream(excelPath));
  convertExcel.save(pdfPath, SaveFormat.PDF);
 }catch (Exception e) {
  e.printStackTrace();
 }
 }

 public static void main(String[] args) {
 //在硬盘直接创建一个空白pdf即可
 AsposeCellTest.excel2pdf("H:/test.xlsx","H:/testExcel.pdf");
 }
}
import com.aspose.pdf.Document;
import com.aspose.pdf.License;

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;

/**
 * Created with IntelliJ IDEA
 * Created By 顾东城
 * Date: 2019/2/22
 * Time: 9:24
 * Desc: 使用Aspose.Pdf将多个pdf合并为一个pdf文件
 */
public class AsposePdfTest {
 /**
 * 获取license
 *
 * @return
 */
 private static boolean getLicense() {
 boolean result = false;
 try {
  // 凭证
  String license =
   "<License>\n" +
    " <Data>\n" +
    " <Products>\n" +
    " <Product>Aspose.Total for Java</Product>\n" +
    " <Product>Aspose.Words for Java</Product>\n" +
    " </Products>\n" +
    " <EditionType>Enterprise</EditionType>\n" +
    " <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
    " <LicenseExpiry>20991231</LicenseExpiry>\n" +
    " <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
    " </Data>\n" +
    " <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +
    "</License>";
  InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8"));
  License asposeLic = new License();
  asposeLic.setLicense(is);
  result = true;
 } catch (Exception e) {
  e.printStackTrace();
 }
 return result;
 }

 /**
 *
 * @param pdfPaths 要合并的pdf文件路径
 * @param mergeSavePath 最终合并完成输出的pdf文件路径
 */
 public static void pdfMergePdf(List<String> pdfPaths,String mergeSavePath){
 try {
  Document mergeDocument = new Document();
  for (String pdfPath : pdfPaths) {
  Document document = new Document(new FileInputStream(pdfPath));
  mergeDocument.getPages().add(document.getPages());
  }
  mergeDocument.save(mergeSavePath);
 } catch (FileNotFoundException e) {
  e.printStackTrace();
 }
 }

 public static void main(String[] args) {
 //将需要合并的pdf文件放入list
 List<String> pdfPaths = Arrays.asList("H:/testDoc.pdf","H:/testExcel.pdf");
 //在硬盘直接创建一个空白pdf即可
 AsposePdfTest.pdfMergePdf(pdfPaths,"H:/merge.pdf");
 }
}

注意事项:

  • Aspose.Words、Aspose.Cells、Aspose.Pdf 三个Jar包中都有Document、License、SaveFormat类,如果Idea或者Eclipse控制台没有报错,但是打开PDF提示PDF格式错误或者文件损坏的话,请检查一下导包是否正确。
  • 获取License网上也有通过类加载器获取license.xml方式获取license,但是我尝试很多次都是报空指针异常,所以采用了直接使用字符串拼接的方式,如果各位有更好的办法可以直接留言。
  • 博客仅作为博主学习记录,交流使用,如果有不正确的地方,请在评论区留言指正。

相关文章

  • java实现excel导出合并单元格的步骤详解

    java实现excel导出合并单元格的步骤详解

    这篇文章主要介绍了java实现excel导出合并单元格,通过使用Apache POI库,我们可以方便地创建Excel文件、填充数据、合并单元格和导出Excel文件,需要的朋友可以参考下
    2023-04-04
  • java字符串中${}或者{}等的占位符替换工具类

    java字符串中${}或者{}等的占位符替换工具类

    今天小编就为大家分享一篇关于java字符串中${}或者{}等的占位符替换工具类,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • springboot配置多数据源的实例(MongoDB主从)

    springboot配置多数据源的实例(MongoDB主从)

    下面小编就为大家分享一篇springboot配置多数据源的实例(MongoDB主从),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Spring Boot加密配置文件特殊内容的示例代码详解

    Spring Boot加密配置文件特殊内容的示例代码详解

    这篇文章主要介绍了Spring Boot加密配置文件特殊内容的相关知识,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • java中的Arrays这个工具类你真的会用吗(一文秒懂)

    java中的Arrays这个工具类你真的会用吗(一文秒懂)

    这篇文章主要介绍了java中的Arrays这个工具类你真的会用吗,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • JAVA JDK8 List分组的实现和用法

    JAVA JDK8 List分组的实现和用法

    今天小编就为大家分享一篇关于JAVA JDK8 List分组的实现和用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java对象初始化过程代码块和构造器的调用顺序

    Java对象初始化过程代码块和构造器的调用顺序

    这篇文章主要介绍了Java对象初始化过程代码块和构造器的调用顺序,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 老生常谈Java异常处理和设计(推荐)

    老生常谈Java异常处理和设计(推荐)

    下面小编就为大家带来一篇老生常谈Java异常处理和设计(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 详解Spring Batch 轻量级批处理框架实践

    详解Spring Batch 轻量级批处理框架实践

    这篇文章主要介绍了详解Spring Batch 轻量级批处理框架实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 五种Java多线程同步的方法

    五种Java多线程同步的方法

    这篇文章主要为大家详细介绍了五种Java多线程同步的方法,需要的朋友可以参考下
    2015-09-09

最新评论