最近项目里碰到这样一个问题,需要把doc格式的文档转换为pdf,我领导本来是准备先上传到百度云,然后获取百度云的略缩图(其实就是pdf)
搞了几天,各种验证码,校验码,折腾的我头疼,最终查看了百度云的实现方式,发现是返回一个pdf给浏览器,那问题就很好解决了,只需要把获取的doc文件字节流转换为pdf字节流发送给前台即可
网上找了一通,各种jar包一大堆,阿帕奇的jar包不收费,但是只能解析docx无法解析doc,也可能是我依赖没拉对,反正最后决定使用aspose-words
虽然我使用的是已经破解的jar包,但是我看网上说这个jar包是收费的,而且破解难度不高。就尝试进行了破解,先上word转pdf的代码,尝试破解在后面
/**
* doc字节流转pdf字节流
* @param bs doc字节流
* @return pdf字节流
*/
public static byte[] docToPdf(byte[] bs) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
Document doc = null;
try {
//创建doc对象,并解析为pdf
doc = new Document(new ByteArrayInputStream(bs));
//如果要加水印在这调用下面的方法
doc.save(os, SaveFormat.PDF);
} catch (Exception e) {
e.printStackTrace();
}
return os.toByteArray();
}
字节数组流并没有打开本地资源,所以不需要关闭
想要破解首先就要知道怎么去激活,这个jar包的激活方式比较简单
License aposeLic = new License();
aposeLic.setLicense("你的激活xml文件地址");
先看构造方法
public License() {
}
空的,直接看方法
void zzV(InputStream var1) throws Exception {
if (var1 == null) {
throw new NullPointerException("stream");
} else {
//明显的dom解析
DocumentBuilderFactory var2 = DocumentBuilderFactory.newInstance();
DocumentBuilder var3 = var2.newDocumentBuilder();
Document var4 = var3.parse(var1);
//校验的方法十有八九在里面,因为后面就已经开始遍历错误信息了
this.zzY(var4);