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,但是我尝试很多次都是报空指针异常,所以采用了直接使用字符串拼接的方式,如果各位有更好的办法可以直接留言。
  • 博客仅作为博主学习记录,交流使用,如果有不正确的地方,请在评论区留言指正。
(0)

相关推荐

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

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

  • java使用Jsoup组件生成word文档

    先利用jsoup将得到的html代码"标准化"(Jsoup.parse(String html))方法,然后利用FileWiter将此html内容写到本地的template.doc文件中,此时如果文章中包含图片的话,template.doc就会依赖你的本地图片文件路径,如果你将图片更改一个名称或者将路径更改,再打开这个template.doc,图片就会显示不出来(出现一个叉叉).为了解决此问题,利用jsoup组件循环遍历html文档的内容,将img元素替换成${image_自增值}的标

  • Java使用poi包读取Excel文档代码分享

    项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得: 1.maven项目需加入如下依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <gr

  • Java基于状态模式实现的文档编辑模式切换功能实例

    本文实例讲述了Java基于状态模式实现的文档编辑模式切换功能.分享给大家供大家参考,具体如下: 一 模式定义 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类. 二 模式举例 1 模式分析 我们借用文档编辑模式切换这一案例来说明这一模式. 2 状态模式静态类图 3 代码示例 3.1 创建状态接口一IState package com.demo.state; import com.demo.context.Context; /** * * 状态接口 * * @au

  • C#利用iTextSharp组件给PDF文档添加图片/文字水印

    最近在做关于PDF文档添加水印的功能,折腾了好久,终于好了.以下做个记录: 首先会用到iTextSharp组件,大家可以去官网下载,同时我也会在本文中附加进来. 代码中添加引用为: using System; using System.Collections.Generic; using System.Linq; using System.Text; using iTextSharp.text.pdf; using System.IO; using iTextSharp.text; 创建一个显示

  • java集成开发SpringBoot生成接口文档示例实现

    目录 为什么要用Swagger ? Swagger集成 第一步: 引入依赖包 第二步:修改配置文件 第三步,配置API接口 Unable to infer base url For input string: "" Swagger美化 第一步: 引入依赖包 第二步:启用knife4j增强 Swagger参数分组 分组使用说明 1.在bean对象的属性里配置如下注释 2.在接口参数的时候加入组规则校验 小结 大家好,我是飘渺. SpringBoot老鸟系列的文章已经写了两篇,每篇的阅读反

  • C#使用HtmlAgilityPack组件解析html文档

    一.HtmlAgilityPack介绍 参考: GitHub:https://github.com/zzzprojects/html-agility-pack/releases 官网:https://html-agility-pack.net/ https://www.nuget.org/packages/HtmlAgilityPack/ HtmlAgilityPack(以下简称HAP)是一个基于.Net的.第三方免费开源的微型类库,主要用于在服务器端解析html文档. HtmlAgilityP

  • 解析在.net中使用XSLT转换xml文档的示例详解

    XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式.学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习.1. XSL既然可以格式化xml的显示样式,我们先来看如何在xml中引用xsl文件如下代码示例:<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="url.

  • idea创建JAVA Class时自动生成头部文档注释的方法

    IDEA设置文档注释模板 创建Class文件时自动生成的头部注释如图 如何配置idea的头部注释格式,可以生成像之前的注释格式一样的文档注释? File->settings->Editor->File and Code Templates->Files->Class 原先模板 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse(&

  • Java多种方式动态生成doc文档

    本来是要在Android端生成doc的(这需求...),最后方法没有好的方法能够在Android上做到完美,最后还是只能搬迁到服务器.不浪费,还是记录下各框架不支持Android的原因以及他们的特点.Java相关的这类框架还是很多的,有几个还不错,可惜要么不支持Android,要么要收费还价格不低. 经过亲自测试,Android不支持Java的awt很多包不能直接在Android上用,FreeMarker挺不错的,能生成复杂漂亮的doc,可惜不支持Android.用POI在Android上能运行

随机推荐