当前位置: 代码网 > it编程>编程语言>Java > Java使用aspose实现pdf转word

Java使用aspose实现pdf转word

2025年02月09日 Java 我要评论
java使用aspose实现pdf转word一、下载aspose-pdf-21.6.jar包【下载地址】,存放目录结构如图;配置pom.xml。<!--pdf to word--><

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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com