java使用aspose实现pdf转word
一、下载aspose-pdf-21.6.jar
包【下载地址】,存放目录结构如图;配置pom.xml。
<!--pdf to word--> <dependency> <groupid>com.aspose</groupid> <artifactid>aspose-pdf</artifactid> <version>21.6</version> <scope>system</scope> <systempath>${project.basedir}/src/main/resources/lib/aspose-pdf-21.6.jar</systempath> </dependency>
二、创建pdfhelper.java
类。运行代码同目录会出现docx文件。
import com.aspose.pdf.document; import com.aspose.pdf.saveformat; import java.io.*; public class pdfhelper3 { public static void main(string[] args) throws ioexception { pdf2doc("d://test.pdf"); } /** * pdf转doc * * @param pdfpath pdf 路径 */ public static void pdf2doc(string pdfpath) { try { //新建一个word文档 string wordpath = pdfpath.substring(0, pdfpath.lastindexof(".")) + ".docx"; fileoutputstream os = new fileoutputstream(wordpath); //doc是将要被转化的word文档 document doc = new document(pdfpath); //全面支持doc, docx, ooxml, rtf html, opendocument, pdf, epub, xps, swf 相互转换 doc.save(os, saveformat.docx); os.close(); //转化用时 } catch (exception e) { system.out.println("pdf 转 word 失败..."); e.printstacktrace(); } } }
注意:如果aspose-pdf-21.6.jar
是官网下载,转换的文件有水印。需要用下面代码运行破解,从新生成aspose-pdf-21.6.jar
包引用。从我上面链接下载已经破解了。
import javassist.*; import java.io.*; import java.util.arraylist; import java.util.enumeration; import java.util.list; import java.util.jar.jarentry; import java.util.jar.jarfile; import java.util.jar.jaroutputstream; public class pdfjarcrack { public static void main(string[] args) throws exception { string jarpath = "d:\\aspose-pdf-21.6.jar"; crack(jarpath); } private static void crack(string jarname) { try { classpool.getdefault().insertclasspath(jarname); ctclass ctclass = classpool.getdefault().getctclass("com.aspose.pdf.adocument"); ctmethod[] declaredmethods = ctclass.getdeclaredmethods(); int num = 0; for (int i = 0; i < declaredmethods.length; i++) { if (num == 2) { break; } ctmethod method = declaredmethods[i]; ctclass[] ps = method.getparametertypes(); if (ps.length == 2 && method.getname().equals("li") && ps[0].getname().equals("com.aspose.pdf.adocument") && ps[1].getname().equals("int")) { // 最多只能转换4页 处理 system.out.println(method.getreturntype()); system.out.println(ps[1].getname()); method.setbody("{return false;}"); num = 1; } if (ps.length == 0 && method.getname().equals("lt")) { // 水印处理 method.setbody("{return true;}"); num = 2; } } file file = new file(jarname); ctclass.writefile(file.getparent()); disposejar(jarname, file.getparent() + "/com/aspose/pdf/adocument.class"); } catch (notfoundexception e) { e.printstacktrace(); } catch (cannotcompileexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } } private static void disposejar(string jarname, string replacefile) { list<string> deletes = new arraylist<>(); deletes.add("meta-inf/37e3c32d.sf"); deletes.add("meta-inf/37e3c32d.rsa"); file orifile = new file(jarname); if (!orifile.exists()) { system.out.println("######not find file:" + jarname); return; } //将文件名命名成备份文件 string bakjarname = jarname.substring(0, jarname.length() - 3) + "cracked.jar"; // file bakfile=new file(bakjarname); try { //创建文件(根据备份文件并删除部分) jarfile jarfile = new jarfile(jarname); jaroutputstream jos = new jaroutputstream(new fileoutputstream(bakjarname)); enumeration entries = jarfile.entries(); while (entries.hasmoreelements()) { jarentry entry = (jarentry) entries.nextelement(); if (!deletes.contains(entry.getname())) { if (entry.getname().equals("com/aspose/pdf/adocument.class")) { jarentry jarentry = new jarentry(entry.getname()); jos.putnextentry(jarentry); fileinputstream fin = new fileinputstream(replacefile); byte[] bytes = readstream(fin); jos.write(bytes, 0, bytes.length); } else { jos.putnextentry(entry); byte[] bytes = readstream(jarfile.getinputstream(entry)); jos.write(bytes, 0, bytes.length); } } else { system.out.println("delete:-------" + entry.getname()); } } jos.flush(); jos.close(); jarfile.close(); } catch (filenotfoundexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } catch (exception e) { e.printstacktrace(); } } private static byte[] readstream(inputstream instream) throws exception { bytearrayoutputstream outsteam = new bytearrayoutputstream(); byte[] buffer = new byte[1024]; int len = -1; while ((len = instream.read(buffer)) != -1) { outsteam.write(buffer, 0, len); } outsteam.close(); instream.close(); return outsteam.tobytearray(); } }
到此这篇关于java使用aspose实现pdf转word的文章就介绍到这了,更多相关java aspose实现pdf转word内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论