最近做了一个项目,客户需求:将Word/Excel转换成PDF。在网上找了找了很多资源,都不能真正的满足需求,最后将最好用的做了一个整理,方便自己后续使用。
(测试案例下载地址:点击下载)
一、word转pdf简单介绍
1、引入破解版aspose-words-15.8.0-jdk16 jar
若不是破解版的Jar包,word转成pdf之后,pdf中会有水印。可以自己在网上找破解的Jar包资源。并且使用aspose需要在项目里加入一个license.xml,不然生成的pdf会有水印:
lib
:存放Jar包的位置。
2、在项目resource文件夹下添加license.xml许可文件
<License>
<Data>
<Products>
<Product>Aspose.Total for Java</Product>
<Product>Aspose.Words for Java</Product>
</Products>
<EditionType>Enterprise</EditionType>
<SubscriptionExpiry>20991231</SubscriptionExpiry>
<LicenseExpiry>20991231</LicenseExpiry>
<SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
</Data>
<Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
</License>
3、word转pdf工具类测试demo:
package xxx;
import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
/**
* 由于ASPOSE比较吃内存,操作大一点的文件就会堆溢出,所以请先设置好java虚拟机参数:-Xms512m -Xmx512m(参考值)<br>
*/
public class Test {
/**
* 获取license
*
* @return
*/
public static boolean getLicense() {
boolean result = false;
try {
InputStream is = Test.class.getClassLoader().getResourceAsStream("\\license.xml");
License aposeLic = new License();
aposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 支持DOC, DOCX, OOXML, RTF, HTML, OpenDocument, PDF, EPUB, XPS, SWF等相互转换<br>
*
* @param args
*/
public static void main(String[] args) {
// 验证License
if (!getLicense()) {
return;
}
try {
long old = System.currentTimeMillis();
Document doc = new Document("D:\\CYD\\公司领导测评操作手册20201205.docx");// 原始word路径
File pdfFile = new File("D:\\test.pdf");// 输出路径
FileOutputStream fileOS = new FileOutputStream(pdfFile);
doc.save(fileOS, SaveFormat.PDF);
long now = System.currentTimeMillis();
System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");
} catch (Exception e) {
e.printStackTrace();
}
}
}
4、consol控制台最终运行结果:
二、Excel转PDF简单介绍
1、引入破解版aspose-cells-8.5.2 jar
Excel转PDF同Word转PDF一样,引入相对应的破解的jar包和license.xml许可文件
2、在项目resource文件夹下添加license.xml许可文件(代码同word中的license.xml)
3、excel转pdf工具类测试demo:
package xxx;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import com.aspose.cells.License;
import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;
/**
*
* 由于ASPOSE比较吃内存,操作大一点的文件就会堆溢出,所以请先设置好java虚拟机参数:-Xms512m -Xmx512m(参考值)<br>
* 如有疑问,请在CSDN下载界面留言,或者联系QQ569925980<br>
*
* @author Spark
*
*/
public class ExcelToPdfTest {
/**
* 获取license
*
* @return
*/
public static boolean getLicense() {
boolean result = false;
try {
InputStream is = ExcelToPdfTest.class.getClassLoader().getResourceAsStream("\\license.xml");
License aposeLic = new License();
aposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 支持DOC, DOCX, OOXML, RTF, HTML, OpenDocument, PDF, EPUB, XPS, SWF等相互转换<br>
*
* @param args
*/
public static void main(String[] args) {
// 验证License
if (!getLicense()) {
return;
}
try {
long old = System.currentTimeMillis();
Workbook wb = new Workbook("D:\\test.xlsx");// 原始excel路径
File pdfFile = new File("D:\\test.pdf");// 输出路径
FileOutputStream fileOS = new FileOutputStream(pdfFile);
wb.save(fileOS, SaveFormat.PDF);
long now = System.currentTimeMillis();
System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");
} catch (Exception e) {
e.printStackTrace();
}
}
}
后续更多方法有待更新......