首先,祝大家新年快乐,2019诸事顺利,很久没有更新博客,今天要给大家说的是 ”Aspose“ 组件,作为2019年第一篇博客,希望大家能够多多支持,2019年要继续加油。

什么是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");
}
}

注意事项:

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

Java使用Aspose组件进行多文档间的转换操作的更多相关文章

  1. Aspose.Words给word文档加水印

    需求:在一些重要的Word文档需要打印时,添加水印以明出处. 方案:使用Aspose组件给word文档 代码:干货如下 /// <summary> /// Inserts a waterm ...

  2. Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现

    笔者最近在给客户开发文档管理系统时,客户要求上传到管理系统的文档(包括ppt,word,excel,txt)只能预览不允许下载.笔者想到了百度文库和豆丁网,百度文库和豆丁网的在线预览都是利用flash ...

  3. 【Java】Java注释 - 单行、块、文档注释

    简单记录,Java 核心技术卷I 基础知识(原书第10 版) 注释 我们在编写程序时,经常需要添加一些注释,用来描述某段代码的作用,提高Java源程序代码的可读性,使得Java程序条理清晰. 写代码的 ...

  4. Java jacob调用打印机打印word文档

    前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...

  5. .NET通过调用Office组件导出Word文档

    .NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word ...

  6. Java 用Freemarker完美导出word文档(带图片)

    Java  用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...

  7. Java SE之XML<一>XML文档规约

    [文档整理系列] Java SE之XML<一>XML文档规约 1.xml文档引用: 1.外部私有DTD: <!DOCTYPE rootNodeName SYSTEM "ur ...

  8. JAVA - JDK 1.8 API 帮助文档-中文版

    JAVA - JDK 1.8 API 帮助文档-中文版 百度云链接: https://pan.baidu.com/s/1_7FFadw1a6J0qTfx2FzqPQ 密码: 41n4

  9. WPF使用Aspose.Words导出Word文档

    一.创建Word文档模板 分析需要导出的word文档,将固定的内容和由程序生成的内容分开; 创建一个word(例如:Template.doc)文档,将固定的内容按照一定的格式写入当前文档中; 打开Te ...

随机推荐

  1. BZOJ_2594_[Wc2006]水管局长数据加强版_LCT

    BZOJ_2594_[Wc2006]水管局长数据加强版_LCT Description SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供 ...

  2. BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划

    BZOJ_4197_[Noi2015]寿司晚宴_状态压缩动态规划 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被 ...

  3. ISCC 2018 (Please give me username and password)

    做过iscc 2018之后有了很多的感触,也有更多的了解自己的不足之处,整理了一下web的wp, 为了保证各位小伙伴的阅读质量,我将会把wp以每一道题一个博文的形式写出来,希望能够帮助到你们 其中的步 ...

  4. 挑子学习笔记:DBSCAN算法的python实现

    转载请标明出处:https://www.cnblogs.com/tiaozistudy/p/dbscan_algorithm.html DBSCAN(Density-Based Spatial Clu ...

  5. WebGL学习之纹理贴图

    为了使图形能获得接近于真实物体的材质效果,一般会使用贴图,贴图类型主要包括两种:漫反射贴图和镜面高光贴图.其中漫反射贴图可以同时实现漫反射光和环境光的效果. 实际效果请看demo:纹理贴图 2D纹理 ...

  6. ASP.NET Core实现 随处可见的基本身份认证

    概览 在HTTP中,基本认证(Basic access authentication,简称BA认证)是一种用来允许网页浏览器或其他客户端程序在请求资源时提供用户名和口令形式的身份凭证的一种登录验证方式 ...

  7. Gatling简单测试SpringBoot工程

    前言 Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标.目前仅支持http协议,可以用来测试web应用程序和RES ...

  8. mysql开发规范(优化)

    规范 库名.表名.字段名必须使用小写字母, 并采用下划线分割, 禁止超过32个字符(整齐.易读) 临时库.表名须以tmp加日期为后缀; 使用Innodb存储引擎.[好处: 支持事务和行级锁] 字符集统 ...

  9. K3数据字典备查

    select distinct f.FNumber as 系统代码, f.FName AS 系统名称,  d.FTableName AS 表名,d.FDescription AS 表说明,a.[nam ...

  10. 如何给自己的app添加分享到有道云笔记这样的功能

    文章同步自http://javaexception.com/archives/34 如何给自己的app添加分享到有道云笔记这样的功能 问题: 在之前的一个开源笔记类项目Leanote中,有个用户反馈想 ...