java使用aspose.pdf或者spire.pdf 将pdf文件转word,实测

news2024/11/17 10:56:59

1. aspose.pdf

aspose.pdf不是破解版的只能转3页,所以我弄了个破解版, aspose.pdf破解版在网上都有破解方法也比较简单,这里就不说了,直接引入破解版的jar包,在这里我用的是aspose-pdf-21.11.jar版本,代码比较简单

 long startTime = System.currentTimeMillis();
        try (
                InputStream in = new FileInputStream("C:\\Users\\JBW\\Desktop\\测试.pdf");
                OutputStream out = new FileOutputStream("C:\\Users\\JBW\\Desktop\\导出.docx");
        ) {
            com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(in);
            System.out.println("初始化doc耗时:" + (System.currentTimeMillis()-startTime));
            pdfDoc.save(out, com.aspose.pdf.SaveFormat.Doc);
            System.out.println("耗时:" + (System.currentTimeMillis()-startTime));
            pdfDoc.close();
        }

我的pdf有12页,然后我这样转发现用了将近120多秒
在这里插入图片描述

2. spire.pdf

spire.pdf也是需要收费的,免费版的将pdf转word文档只能转10页,我搜索了一些资料,也是不知道怎么实现破解版,所以这里就用免费版的。但是就是这十页,只用了 10秒左右。这个代码也比较简单

 public static void main(String[] args) {
 long startTime = System.currentTimeMillis();
        String srcPath = "C:\\Users\\JBW\\Desktop\\测试.pdf";

        String desPath = "C:\\Users\\JBW\\Desktop\\导出.docx";
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile(srcPath);
        //保存为Word格式
        pdf.saveToFile(desPath, FileFormat.DOCX);
        removeWatermark(new File(desPath));
        System.out.println("耗时:"+ (System.currentTimeMillis()-startTime));
        }

 //移除文字水印
    public static boolean removeWatermark(File file) {
        try {
            XWPFDocument doc = new XWPFDocument(new FileInputStream(file));
            //添加水印
            addWaterMark(doc, "测试");
            // 段落
            List<XWPFParagraph> paragraphs = doc.getParagraphs();
            for (XWPFParagraph paragraph : paragraphs) {
                String text=paragraph.getText();
                if (text.contains("Evaluation Warning")){
                    List<XWPFRun> runs = paragraph.getRuns();
                    runs.forEach(e-> e.setText("",0));
                }
            }
            FileOutputStream outStream = new FileOutputStream(file);
            doc.write(outStream);
            outStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return true;
    }

removeWatermark方法是去除spire.pdf水印的。
因为上面的代码只能转十页,所以我们换个思路,我们把pdf文件每页生成一份pdf,然后将pdf转成docx文档,在将docx文档合并起来,这样就可以实现,这个代码实现起来就会麻烦一点,耗时的话是50多秒,也是比上面的aspose.pdf破解版快,如果想要具体的代码,点击下载

总结

不知道是不是aspose.pdf破解版的原因,速度是比较慢的,所以在这里我是选择spire.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/636694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电路】电路与电子技术基础 课堂笔记 第9章 集成运算放大器基础

本章的研究对象是集成运算放大器的应用&#xff0c; 主要关注如何利用理想运放的特点&#xff0c;分析放大电路&#xff0c; 不讨论继承运放的工作原理和内部结构。 9.3 集成运放的主要参数与选择 9.4 集成运放的应用 集成运放应用于信号运算&#xff0c;信号处理&#xff…

调用阿里API实现手机号归属地查询

调用阿里API实现手机号归属地查询 1&#xff0e;作者介绍2&#xff0e;号码归属地介绍2.1 什么是手机号码归属地&#xff1f;2.2 为什么需要手机号码归属地&#xff1f;2.3 手机号码归属地查询对个人的运用 3&#xff0e;调用阿里API实现手机号归属地查询3.1阿里API调用3.2补充…

BYC30W-600P-ASEMI代理NXP快恢复二极管BYC30W-600P

编辑&#xff1a;ll BYC30W-600P-ASEMI代理NXP快恢复二极管BYC30W-600P 型号&#xff1a;BYC30W-600P 品牌&#xff1a;NXP/恩智浦 封装&#xff1a;TO-247-2L 最大漏源电流&#xff1a;30A 漏源击穿电压&#xff1a;600V 引脚数量&#xff1a;2 恢复时间&#xff1a;2…

JavaScript:获取当前日期、星期、时间 | Data对象

文章目录 1 Date对象2 代码示例3 获取 yyyy-MM-dd 格式的日期 1 Date对象 JavaScript 中的 Date 对象表示日期和时间。Date 对象基于自 1970 年 1 月 1 日 00:00:00 UTC&#xff08;协调世界时&#xff09;以来的毫秒数。以下是 Date 对象的一些常用方法和属性。 getFullYear…

H5页面这样测,业务方反馈 0 Bug!

部门最近的H5相关项目挺多的&#xff0c;由于团队之前接触的大多是Web项目&#xff0c;很少涉及H5&#xff0c;想着给团队成员培训下&#xff0c;减少漏测率&#xff0c;于是整理了一个文档。 别说&#xff0c;效果还挺不错的&#xff0c;连着上线6个版本&#xff0c;都没有收…

Python3数据分析与挖掘建模(10)多因子:复合分析-交叉分析与实现示例

1. 复合分析 1.1 概述 复合分析&#xff08;Factorial Analysis&#xff09;是一种统计分析方法&#xff0c;用于研究多个因素对观测结果的影响&#xff0c;并探究各个因素之间的相互作用效应。 在复合分析中&#xff0c;研究者会选择多个因素&#xff08;也称为处理变量或独…

路由器WiFi密码怎么设置?这样做可以快速设置!

案例&#xff1a;我在外面租房&#xff0c;买了一个路由器&#xff0c;为了不让别人使用&#xff0c;我想设置一个密码。但我不知道如何操作。路由器怎么设置密码&#xff1f;求方法分享&#xff01; 如今&#xff0c;Wi-Fi已成为日常生活中不可或缺的一部分。为了保障个人和家…

4. LockSupport与线程中断

4.1 线程中断机制 4.1.1 从阿里蚂蚁金服面试题讲起 Java.lang.Thread下的三个方法: ● 如何中断一个运行中的线程&#xff1f; ● 如何停止一个运行中的线程&#xff1f; 4.1.2 什么是中断机制 ● 首先&#xff0c;一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应…

排水管网监测,万宾排水管网在线监测系统

城市排水管网是保障城市环境卫生的重要基础设施。然而&#xff0c;传统的排水管网管理方式存在许多问题.通过排水管网在线监测系统的建设&#xff0c;可以实现对管网上窨井井盖状态、管网液位、管网流量、管网水质等数据采集&#xff0c;实时掌握排水管网运行状况&#xff0c;为…

@足智多谋的你,联网智能门锁试卷(2023高考版)正式发布!

千淘万漉虽辛苦&#xff0c;吹尽狂沙始到金。2023年的高考已于上周正式结束。湖南省高考成绩和录取控制分数线将在6月25日正式公布。广大学子历经一千多个日夜的努力&#xff0c;即将在这一天见证结果。 其实&#xff0c;当我们真正走出校园才发现&#xff0c;学无止境&#x…

敏捷项目管理

在了解敏捷项目管理之前&#xff0c;我们先看下敏捷和传统项目管理有什么区别。 传统项目管理&#xff1a;阶段式项目管理模式。 制定详细的计划和步骤&#xff0c;按计划执行&#xff0c;直到所有的计划执行全部结束。 敏捷项目管理模式&#xff0c;从愿景和高价值的目标出发…

V5.0.X版本 EMQX安装、卸载 以及使用

V5.0.X版本 EMQX安装、卸载 以及使用 一、卸载二、下载安装2.1 下载2.2 安装2.2.1 rpm安装2.2.2 tar安装 2.3 测试启动 三、EMQX使用 回到目录    回到末尾 EMQX为大规模分布式物联网 MQTT 消息服务器。提供高效可靠连接海量物联网设备&#xff0c;实时处理分发消息与事件流数…

高级信息系统项目管理师资料分享

&#x1f495;&#x1f495; 推荐&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; 文章目录 1. 高级信息系统项目管理师资料分享2023年5月12日2023年4月10日2023年3月28日2023.5高项精讲 2023备考高级信息系统项目管理师资料 1. 高级信息系统项目管理师资料分…

超级实用!Python 3.6帮您提升编码效率的一个新的小特性 ——f{}

Python3.6 格式化字符串的新用法 在python 3.6格式化字符串时&#xff0c;增加了一个非常实用的新特性&#xff0c;文本以“f”或者“F”为前缀加上{}&#xff0c;可以实现类似于%和str.format的功能&#xff0c;但与他们相比更加易读和不易不错。使用也非常方便&#xff0c;以…

3分钟教你怎样搭建属于你的私有仓库

上一节我们讲了实战项目&#xff1a;docker部署springboot项目&#xff0c;我介绍了镜像的基本操作和镜像的原理以及如何利用docker部署springboot项目&#xff0c;那么有了镜像&#xff0c;我们应该如何更好地存储和分发镜像呢&#xff1f;答案就是今天的主角——Docker 的镜像…

如何能够系统的自学网络安全(黑客)?

一、自学网络安全学习的误区和陷阱 1.不要试图以编程为基础的学习开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而且实际向安全过渡后可用到的关键知识并不多 一…

ResultMap使用

要解决的问题&#xff1a;属性名和字段名不一致 1.1 查询为null问题 查看之前的数据库的字段名 Java中的实体类设计 public class User { private int id; //id private String name; //姓名 private String password; //密码和数据库不一样&#xff01; //构造 //set/get /…

容器(第六篇)docker-harbor

什么是Harbor Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。 Harbor以 Docker 公司开源的 Registry 为基础&#xff0c;提供了图形管理 UI 、基于角色的访问控制(Role Based AccessContr…

常用的decap MOS电容版图介绍

常用的两种decap版图如下&#xff1a; 图a 图b 很多人认为decap电容就是source drain 衬底接地做下极板&#xff0c;poly gate接电源做上极板&#xff0c;这种认同是错误的。 我们先把MOS电容拆分成pmos和nmos去看。对于图a&#xff0c;poly没有接任何东西&#xff0c;pmos部…

数据库事务隔离级别

数据库事务隔离级别&#xff1a; 不同隔离级别引发的问题&#xff1a;对于同时运行的多个事务&#xff08;多线程并发&#xff09;, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题: &#xff08;问题的本质就是线程安全问题&#x…