Java中Aspose组件进行多文档间的转换方法总结
什么是Aspose?
Aspose.Total是Aspose公司旗下的最全的一套office文档管理方案,主要提供.net跟java两个开发语言的控件套包,通过它,我们可以有计划地操纵一些商业中最流行的文件格式:Word,Excel,PowerPoint,Project,等office文档以及PDF文档。除了强大的文件操纵组件之外,Aspose.Total还提供了用于制图、写电子邮件、拼写检查、创建条形码、生成adhoc查询、重现格式以及工作流等组件,运用它我们可以整理一个完整的文档管理方案。
包含的功能:
Aspose.Word:
Aspose.Words是一款先进的类库,通过它可以直接在各个应用程序中执行各种文档处理任务。Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式。使用Aspose.Words,您可以生成,更改,转换,渲染和打印文档而不使用MicrosoftWord。
Aspose.Cell:
Aspose.Cells是一个广受赞誉的电子表格组件,支持所有Excel格式类型的操作,用户无需依靠MicrosoftExcel也可为其应用程序嵌入读写和处理Excel数据表格的功能。Aspose.Cells可以导入和导出每一个具体的数据,表格和格式,在各个层面导入图像,应用复杂的计算公式,并将Excel的数据保存为各种格式等等---完成所有的这一切功能都无需使用MicrosoftExcel和MicrosoftOfficeAutomation。
Aspose.PDF:
Aspose.Pdf是一个PDF文档创建组件,可以帮助用户无需使用AdobeAcrobat即可读写和操作PDF文件。Aspose.Pdf丰富功能:PDF文档压缩选项,表格创建与操作,图表支持,图像功能,丰富的超链接功能,扩展的安全性组件以及自定义字体处理。
Aspose.BarCode:
Aspose.BarCode是一个功能强大,且稳健的条形码生成和识别组件。
Aspose.Slide:
Aspose.Slides是一个独特的可用于PowerPoint管理的控件,用户无需使用MicrosoftPowerPoint即可在应用程序中对MicrosoftPowerPoint文件进行读写以及操作。Aspose.Slides是第一个能在用户的应用程序中对PowerPoint文档进行管理的组件。
Aspose.Task:
Aspose.Tasks是一个非图形的.NET项目管理组件,使.NET应用程序可以阅读以及撰写、管理项目文档时无须使用MicrosoftProject。使用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
importcom.aspose.words.Document;
importcom.aspose.words.License;
importcom.aspose.words.SaveFormat;
importjava.io.ByteArrayInputStream;
importjava.io.FileInputStream;
importjava.io.InputStream;
/**
*CreatedwithIntelliJIDEA
*CreatedBy顾东城
*Date:2019/2/21
*Time:14:01
*Desc:使用Aspose.Words将word文件转换为pdf文件
*/
publicclassAsposeWordTest{
/**
*获取license
*
*@return
*/
privatestaticbooleangetLicense(){
booleanresult=false;
try{
//凭证
Stringlicense=
"\n"+
"\n"+
"\n"+
"Aspose.TotalforJava \n"+
"Aspose.WordsforJava \n"+
" \n"+
"Enterprise \n"+
"20991231 \n"+
"20991231 \n"+
"8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7 \n"+
"\n"+
"sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU= \n"+
" ";
InputStreamis=newByteArrayInputStream(license.getBytes("UTF-8"));
LicenseasposeLic=newLicense();
asposeLic.setLicense(is);
result=true;
}catch(Exceptione){
e.printStackTrace();
}
returnresult;
}
/**
*word转pdf
*@paramdocPath要转换的word文件路径
*@parampdfPath转换完成后输出的pdf文件路径
*/
publicstaticvoiddoc2pdf(StringdocPath,StringpdfPath){
if(!getLicense()){
return;
}
try{
DocumentconvertDoc=newDocument(newFileInputStream(docPath));
convertDoc.save(pdfPath,SaveFormat.PDF);
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
//在硬盘直接创建一个空白pdf即可
AsposeWordTest.doc2pdf("H:/test.docx","H:/testDoc.pdf");
}
}
importcom.aspose.cells.License;
importcom.aspose.cells.SaveFormat;
importcom.aspose.cells.Workbook;
importjava.io.ByteArrayInputStream;
importjava.io.FileInputStream;
importjava.io.InputStream;
/**
*CreatedwithIntelliJIDEA
*CreatedBy顾东城
*Date:2019/2/22
*Time:9:01
*Desc:使用Aspose.Cells将excel文件转换为pdf文件
*/
publicclassAsposeCellTest{
/**
*获取license
*
*@return
*/
privatestaticbooleangetLicense(){
booleanresult=false;
try{
//凭证
Stringlicense=
"\n"+
"\n"+
"\n"+
"Aspose.TotalforJava \n"+
"Aspose.WordsforJava \n"+
" \n"+
"Enterprise \n"+
"20991231 \n"+
"20991231 \n"+
"8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7 \n"+
"\n"+
"sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU= \n"+
" ";
InputStreamis=newByteArrayInputStream(license.getBytes("UTF-8"));
LicenseasposeLic=newLicense();
asposeLic.setLicense(is);
result=true;
}catch(Exceptione){
e.printStackTrace();
}
returnresult;
}
/**
*excel转pdf
*@paramexcelPath要转换的excel文件路径
*@parampdfPath转换完成后输出的pdf文件路径
*/
publicstaticvoidexcel2pdf(StringexcelPath,StringpdfPath){
if(!getLicense()){
return;
}
try{
WorkbookconvertExcel=newWorkbook(newFileInputStream(excelPath));
convertExcel.save(pdfPath,SaveFormat.PDF);
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
//在硬盘直接创建一个空白pdf即可
AsposeCellTest.excel2pdf("H:/test.xlsx","H:/testExcel.pdf");
}
}
importcom.aspose.pdf.Document;
importcom.aspose.pdf.License;
importjava.io.ByteArrayInputStream;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.InputStream;
importjava.util.Arrays;
importjava.util.List;
/**
*CreatedwithIntelliJIDEA
*CreatedBy顾东城
*Date:2019/2/22
*Time:9:24
*Desc:使用Aspose.Pdf将多个pdf合并为一个pdf文件
*/
publicclassAsposePdfTest{
/**
*获取license
*
*@return
*/
privatestaticbooleangetLicense(){
booleanresult=false;
try{
//凭证
Stringlicense=
"\n"+
"\n"+
"\n"+
"Aspose.TotalforJava \n"+
"Aspose.WordsforJava \n"+
" \n"+
"Enterprise \n"+
"20991231 \n"+
"20991231 \n"+
"8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7 \n"+
"\n"+
"sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU= \n"+
" ";
InputStreamis=newByteArrayInputStream(license.getBytes("UTF-8"));
LicenseasposeLic=newLicense();
asposeLic.setLicense(is);
result=true;
}catch(Exceptione){
e.printStackTrace();
}
returnresult;
}
/**
*
*@parampdfPaths要合并的pdf文件路径
*@parammergeSavePath最终合并完成输出的pdf文件路径
*/
publicstaticvoidpdfMergePdf(ListpdfPaths,StringmergeSavePath){
try{
DocumentmergeDocument=newDocument();
for(StringpdfPath:pdfPaths){
Documentdocument=newDocument(newFileInputStream(pdfPath));
mergeDocument.getPages().add(document.getPages());
}
mergeDocument.save(mergeSavePath);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
//将需要合并的pdf文件放入list
ListpdfPaths=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,但是我尝试很多次都是报空指针异常,所以采用了直接使用字符串拼接的方式,如果各位有更好的办法可以直接留言。
- 博客仅作为博主学习记录,交流使用,如果有不正确的地方,请在评论区留言指正。