iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java实现PDF转Word的示例代码(无水印无页数限制)
  • 476
分享到

Java实现PDF转Word的示例代码(无水印无页数限制)

2024-04-02 19:04:59 476人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言二、jar破解1.项目远程仓库配置2.pom文件引入相关依赖3.破解代码三、pdf转Word一、前言 学习概述:简单的介绍一下本篇文章要讲解的Java知识点 学习目标:读

一、前言

学习概述:简单的介绍一下本篇文章要讲解的Java知识点

学习目标:读者读完这篇文章之后,你希望他掌握你讲解的哪些重要的知识点

二、jar破解

1.项目远程仓库配置

aspose-pdf 这个需要配置单独的仓库地址才能下载,不会配置的可以去官网直接下载jar引入项目代码中。

<repositories>
        <repository>
            <id>AsposeJavaapi</id>
            <name>Aspose Java API</name>
            <url>https://repository.aspose.com/repo/</url>
        </repository>
    </repositories>

2.pom文件引入相关依赖

    <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.20.0-GA</version>
        </dependency>
        <!-- Https://mvnrepository.com/artifact/com.aspose/aspose-pdf -->
        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-pdf</artifactId>
            <version>21.8</version>
        </dependency>

Javassist是一个开源的分析、编辑和创建Java字节码的类库。

aspose-pdf是一个处理pdf的java类库。

3.破解代码

 
 
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 = "E:\\Maven_repository\\com\\aspose\\aspose-pdf\\21.8\\aspose-pdf-21.8.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")){
                    System.out.println("Replace:-------" +entry.getName());
                    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();
    }

修改你本机的aspose-pdf-21.8.jar路径,然后运行主方法,破解成功后,会再同级文件夹下生成一个aspose-pdf-21.8.cracked.jar包,用这个包替换原来的aspose-pdf-21.8.jar包即可。

控制台输出

三、pdf转word

代码实现

 
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("C:\\Users\\liuya\\Desktop\\pdf\\中信重工铸锻公司数字化工厂技术要求.pdf");
    }
 
 
    //pdf转doc
    public static void pdf2doc(String pdfPath) {
        long old = System.currentTimeMillis();
        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();
            //转化用时
            long now = System.currentTimeMillis();
            System.out.println("Pdf 转 Word 共耗时:" + ((now - old) / 1000.0) + "秒");
        } catch (Exception e) {
            System.out.println("Pdf 转 Word 失败...");
            e.printStackTrace();
        }
    }
 
 
}

修改自己的pdf文件路径,运行主方法即可,完成无水印,无页数限制转换word文件

控制台输出

到此这篇关于Java实现PDF转Word的示例代码(无水印无页数限制)的文章就介绍到这了,更多相关Java PDF转Word内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java实现PDF转Word的示例代码(无水印无页数限制)

本文链接: https://www.lsjlt.com/news/149052.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java实现PDF转Word的示例代码(无水印无页数限制)
    目录一、前言二、jar破解1.项目远程仓库配置2.pom文件引入相关依赖3.破解代码三、pdf转word一、前言 学习概述:简单的介绍一下本篇文章要讲解的Java知识点 学习目标:读...
    99+
    2022-11-13
  • Java实现Excel文件转PDF(无水印无限制)
    目录前言一、jar破解1.项目远程仓库配置2.pom文件引入相关依赖3.代码破解 二、Excel转PDF1.代码实现2.Aspose.License.xml 授权文件总结前...
    99+
    2022-11-13
  • Java实现无损Word转PDF的示例代码
    目录前言word转pdf实现思路项目远程仓库Maven项目pom文件依赖核心代码实现结果分析前言 本来想写word转pdf和pdf转word的代码呢,没想到word转pdf就写了很多...
    99+
    2022-11-13
  • Java如何实现Excel文件转PDF无水印无限制
    这篇“Java如何实现Excel文件转PDF无水印无限制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现Exc...
    99+
    2023-07-02
  • Java实现PDF转为Word文档的示例代码
    目录代码编译环境将 PDF 转换为固定布局的 Doc/Docx 文档完整代码将 PDF 转换为流动形态的 Doc/Docx 文档完整代码效果图众所周知,PDF文档除了具有较强稳定性和...
    99+
    2023-01-28
    Java实现PDF转Word Java PDF转Word Java PDF Word
  • Java实现PDF转HTML/Word/Excel/PPT/PNG的示例代码
    从 Maven 下载 Aspose.PDF 通过将以下配置添加到 pom.xml, 您可以直接从基于Maven的项目 轻松地使用Aspose.PDF for Java 。 <r...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作