Java语言实现word转PDF(10分钟解决)

2023-11-02

前言:

经常做OA办公项目的同学一定和我一样被各种线上的office操作整疯了。基本上涉及到Java操作office的时候就会想到POI和openoffice.这两种方案都是需要找各种jar包,然后用里面繁杂的api。关键是做出来的文件格式有各种各样的问题,有时生成的文件打不开,有时文档格式混乱。搞了好几天的需求终于实现了,最后看到效果那一刻。。。唉呀妈呀 脑瓜疼 脑瓜疼

此时就需要另辟新径了,得找个更专业的解决线上office操作的插件——pageoffice。虽然pageoffice官网提供了大量功能,但是通过这篇博客可以让同学们省去学习时间,让你10分钟实现word转PDF的功能。并且最重要的是本篇博客后面会提供破解注册码

先看效果

点击另存为PDF按钮就会开始转PDF(如果不想点击按钮也可以放在其他事件中自动转PDF)

然后查看转换的PDF文件,格式是非常标准的,和本地word转出来的一模一样

部署步骤(只需5步

1.官网http://www.zhuozhengsoft.com/dowm/下载集成文件,引入jar包,配置web.xml

去刚才下载的集成文件中找到lib,将里面的内容放在项目web-inf的lib中引入jar包,然后将web.xml的pageoffice配置引入到自己项目的wb.xml中

2.在父页面aaa.jsp(需要打开文档的页面)放一个a标签或者button

写a标签之前先引入pageoffice需要的js文件

<script type="text/javascript" src="/jquery.min.js"></script>
<script type="text/javascript" src="/pageoffice.js" id="po_js_main"></script>

然后添加a标签

<a href="javascript:POBrowser.openWindowModeless('word.jsp', 'width=1050px;height=900px;','id=er');">打开word文档</a>

3.在父页面同级目录下创建一个word.jsp文件

<%@ page language="java"
         import="java.util.*, com.zhuozhengsoft.pageoffice.*"
         pageEncoding="utf-8"%>
<%
    PageOfficeCtrl pocCtrl=new PageOfficeCtrl(request);
//设置服务器页面
    pocCtrl.setServerPage(request.getContextPath()+"/poserver.zz");
//添加自定义按钮
    pocCtrl.addCustomToolButton("保存", "Save()", 1);
    pocCtrl.addCustomToolButton("另存为PDF文件", "SaveAsPDF()", 1);
//设置保存页面
    pocCtrl.setSaveFilePage("SaveFile.jsp");
    String fileName = "template.docx";
    String pdfName = fileName.substring(0, fileName.length() - 4) + ".pdf";
//打开文件
    pocCtrl.webOpen(fileName, OpenModeType.docNormalEdit, "张佚名");
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Word文件转换成PDF格式</title>
    <script type="text/javascript">
        //保存
        function Save() {
            document.getElementById("PageOfficeCtrl1").WebSave();
        }

        //另存为PDF文件
        function SaveAsPDF() {
            document.getElementById("PageOfficeCtrl1").WebSaveAsPDF();
            document.getElementById("PageOfficeCtrl1").Alert("PDF文件已经保存到template.doc同级目录下。");
            <%--document.getElementById("div1").innerHTML = "<a href='OpenPDF.jsp?fileName=<%=pdfName %>'> 查看另存的 pdf 文件<a><br><br>";--%>
            document.getElementById("div1").innerHTML = "<a href='template.pdf'> 查看另存的 pdf 文件<a><br><br>";
        }
    </script>

</head>
<body>
<form id="form1">
    <div id="div1"></div>
    <div style="width: auto; height: 700px;">
        <%=pocCtrl.getHtmlCode("PageOfficeCtrl1")%>
    </div>
</form>
</body>
</html>

4.在父页面同级目录下创建一个SaveFile.jsp文件 

<%@ page language="java"
         import="java.util.*,com.zhuozhengsoft.pageoffice.*"
         pageEncoding="utf-8"%>
<%
    FileSaver fs = new FileSaver(request, response);
    //保存文件到本地磁盘
    fs.saveToFile(request.getSession().getServletContext().getRealPath(fs.getFileName()));
    fs.close();

%>

5.新建一个名为template.docx的word文件(如果新建的是doc文件就将第三步的String fileName = "template.docx"代码改为String fileName = "template.doc";)放在父页面同级目录下.然后启动项目直接访问aaa.jsp点击链接.此时会提示安装插件,点击安装成功后提示注册,填写相关信息,填写注册码CA1XB-MF7Y-12ST-PSBP2就可以打开文档.

  注意:这些只是演示级代码,大家可以去pageoffice官网下载示例代码直接将samples4文件夹扔到Tomcat的webapps下,启动Tomcat,浏览器访问http://localhost:8080/Samples4/index.html,查看示例中的下面一个链接,直接看samples4文件夹下SaveAsPDF文件夹里面的代码.

 

如有侵权,请联系小编

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java语言实现word转PDF(10分钟解决) 的相关文章

  • Spring 框架 application.properties 与 logback.xml

    我正在使用 Spring 和 Spring boot 最近 在尝试使用 EhCache 时 我尝试为 EhCache 启用日志记录 在 application properties 中设置日志级别 logging level org spr
  • Eclipse JAVA工具jar不存在

    The archive C Java jdk1 6 0 26 32 lib tools jar which is referenced by the classpath does not exist 这是我运行Tomcat时遇到的错误 清理
  • Vaadin框架播放视频

    我可以使用 Vaadin Framewotk 播放视频吗 主要思想是从本地驱动器加载 flv 或 avi 格式的视频文件 并使用 vaadin 框架在网络上播放 谢谢 Sampler中有一个示例 http demo vaadin com s
  • 如何在Eclipse中制作war文件[重复]

    这个问题在这里已经有答案了 制作war文件的简单方法是什么 当我右键单击 在服务器上运行 时 我的项目正在运行 但我想部署在 tomcat 服务器上 我已经安装了m2clipse但这给了我一个错误 maven是否必须制作war文件 我需要特
  • JConsole主类

    我正在尝试使用其 Main 类从命令行启动 JConsole 我提取了 jconsole jar 的内容 在 MANIFEST MF 中我可以看到 Main Class sun tools jconsole JConsole 所以我尝试运行
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • 无法解析 ListView 适配器中的 getSystemService 方法

    我正在研究约翰霍顿的Android 编程初学者 目前正在尝试创建一个笔记应用程序 霍顿刚刚介绍ListViews 但是 我遇到了麻烦adapter class public class NoteAdapter extends BaseAda
  • Java RCP/SWT - Eclipse RCP 中的“Android Toast like”对话框

    有谁知道是否存在某些弹出窗口的实现 例如 Android TOAST 通知是以下内容的一部分迈林公共区 https projects eclipse org projects mylyn commons 要集成它们 请添加Mylyn Com
  • 如何统计lucene索引中每个文档的term数?

    我想知道 lucene 索引中每个文档的术语数量 我一直在 API 和互联网上搜索 但没有结果 你能帮助我吗 Lucene 的构建是为了回答相反的问题 即哪些文档包含给定术语 因此 为了获取文档的术语数量 您必须进行一些修改 第一种方法是存
  • Java 线程 JavaDoc

    我编写了一个只能在特定线程上调用的方法 是否应该将标准注释或注释添加到方法的 javadoc 中来表示这一点 不知道有任何这样的标准注释 Java 并发实践 http www javaconcurrencyinpractice com 在第
  • ImageIO read() 和 write() 操作后 GIF 图像变得错误

    我有这个代码 它只是读取 GIF 文件 用背景重新绘制它 然后输出到新的 GIF 文件 问题是结果文件变得奇怪 我不知道为什么它的质量变得很差 JPG 文件不会出现此问题 如何修复它 import java awt Color import
  • 有没有办法使用 SauceLabs 的 RemoteWebDriver 禁用 CORS 检查

    问题说明了一切 我正在尝试在 SauceLabs 上执行一些硒测试 该测试加载一个发出跨域请求的网页 我在想是否有一种方法可以通过代码以独立于平台的方式禁用 CORS 使用时Chrome驱动程序 Chrome组合禁用cors questio
  • 将项目导入 Eclipse 后出现“必须重写超类方法”错误

    任何时候我必须将我的项目重新导入到 Eclipse 中 如果我重新安装了 Eclipse 或者更改了项目的位置 几乎全部我的重写方法的格式不正确 导致错误 该方法必须重写超类方法 值得注意的是 无论出于何种原因 Android 项目中方法参
  • ClassNotFoundException:在嵌入了 cxf 依赖项的 OSGi 包中找不到 org.glassfish.jersey.internal.RuntimeDelegateImpl

    这与jax rs 2 0 更改默认实现 https stackoverflow com questions 17366266 jax rs 2 0 change default implementation我有一个 OSGi 包 其中包含
  • AWS Java SDK 中 DynamoDB v2 的迁移详细信息?

    有没有人对新的命名空间进行了更改 com amazonaws services dynamodbv2 以及 AWS Java SDK 1 4 2 及更高版本 中 DynamoDB 的接口 本地二级指数的发布显然需要根据1 4 2 发行说明
  • 如何指示 yum 安装特定版本的 OpenJDK

    我尝试安装openjdk in the redhat服务器 如何安装指定版本 我要安装的版本是 11 0 4 使用以下命令安装的版本是11 0 6 yum install java 11 openjdk devel 曾与 yum showd
  • 术语“可序列化”是什么意思? [复制]

    这个问题在这里已经有答案了 不太确定我读过的定义可序列化实际上做了什么 import java io Serializable import java text StringCharacterIterator import java uti
  • 如何为信号量中等待的线程提供优先级?

    我使用信号量来限制访问函数的线程数量 我希望接下来要唤醒的线程应该由我将给出的某个优先级选择 而不是默认信号量唤醒它们的方式 我们怎样才能做到这一点 这是实现 class MyMathUtil2 implements Runnable do
  • 为什么在 this 方法中添加 If 语句会大大降低速度?

    我在中遇到过这个回答另一个问题 https stackoverflow com questions 12233594 faster way to apply alpha to a jpeg in an android app 我试图诊断哪些
  • 如何使用属性文件在log4j2中创建多个日志文件?

    我正在使用 property 文件在特定路径中创建日志文件 但我正在使用它创建单个文件 以下是我的属性文件代码 status error dest err name PropertiesConfig property filepath ap

随机推荐

  • Excel每页都打印表头

    前言 有时候表格打印时 需要每页都打印表头 但是表格默认是只打印第一页的表头 那该如何设置呢 步骤 切换到 页面布局 打印标题 在 顶端标题行 中右侧可以选择你要打印的标题行 点击确定就欧克了 多行标题就选中多行就行 如 第1行到第3行 所
  • 上岸了,不写代码了

    上岸了 目前不搞这些东西了 不出意外的话应该不会再回来更新和回复了 各位 江湖再见
  • BugKu-Web-矛盾

    BugKu Web 矛盾 题目链接 https ctf bugku com challenges detail id 72 html 考点 PHP弱类型比较漏洞 题目源码分析 num GET num 定义一个num变量用get方法接收 if
  • VUE-鼠标移入到目标区域变成小手模样

    这是测试提的一个需求 当鼠标移入点击更多时 鼠标指针变成小手模样 其实这个东西特别简单 只是用的不多平常 我们只需要给目标区域的style样式中加入 cursor pointer 这个鼠标就好了
  • vue文件无法正常build

    如图所示 run serve后控制台没有报错 但是运行到此处直接结束 解决办法 暴力解决 直接删除node module 再输入cnpm install重新安装依赖 重新安装完成后成功运行
  • CeiT:训练更快的多层特征抽取ViT

    GiantPandaCV导语 来自商汤和南洋理工的工作 也是使用卷积来增强模型提出low level特征的能力 增强模型获取局部性的能力 核心贡献是LCA模块 可以用于捕获多层特征表示 引言 针对先前Transformer架构需要大量额外数
  • vue3 - watchEffect

    watchEffect watch watchEffect 不同点 停止侦听 effect 副作用 watchEffect的执行时机 watchEffect computed 的不同 Vue 3 watch Vue 3 computed特点
  • python金融分析小知识(30)——比较常见的pd.set_option的使用

    Hello 大家好 我是一名新来的金融领域打工人 日常分享一些python知识 都是自己在学习生活中遇到的一些问题 分享给大家 希望对大家有一定的帮助 哈喽大家好 今天我要给大家讲讲在pandas的时候过程中我们会经常遇到的DataFram
  • CSS中的BFC详解

    BFC的特性和作用 1 避免外边距重叠 2 清楚浮动 3 阻止元素被浮动元素覆盖 第三条提供了布局的一种思路 左边盒子宽度固定 右边盒子宽度占满剩余的宽度 左边设置浮动 右边设置overflow hidden即可实现 或者三栏布局 两边固定
  • Ubuntu中Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.

    Ubuntu中在用npm install 时报错 gyp WARN download NVM NODEJS ORG MIRROR is deprecated and will be removed in node gyp v4 please
  • linux下保存git密码

    在使用shell脚本部署项目时 我们经常从gitee或者github拉取代码 每次都输入密码会比较繁琐 这里介绍一下 如何保存git密码 https方式 1 查看服务器是否保存密码git config list 2 邮箱设置 用户名设置 保
  • 基于Javaweb的超市管理系统毕业设计项目源码+数据库+详细设计文档

    超市管理系统 介绍 大学校内超市管理系统 实现收银台 商品分类管理 商品库存管理 商品管理 营收统计等功能 完整代码下载地址 基于Javaweb的超市管理系统 软件架构 使用说明 项目导入eclipse 配置tomcat jdk sql 导
  • 使用scrapy框架进行爬虫时,报出异常:NotImplementedError: Test1Spider.parse callback is not defined

    这种错误类型今天第一次使用Scrapy框架 就出现了 找了很多博客中的解决方法 还是不能访问 改了一下execute py文件的位置就ok了 如图 书上说这三个位置放置execute py文件都可以 我把文件放在第二个目录下 就不会抛出异常
  • 从辩证的角度看待chatGPT,我们该如何对待?

    从辩证的角度 看待chatGPT 0 什么是ChatGPT 客观阐述 1 通过唯物辩证法的五对基本范畴进行分析 1 0 内容与形式 1 1 现象和本质 1 2 原因与结果 1 3 必然与偶然 1 4 现实与可能 2 使用ChatGPT会给我
  • SPADE(GauGAN)代码运行方法

    SPADE运行方法 写在前面 为什么Pix2PixHD和SPADE都不用RGB作为输入 如何运行SPADE 可能遇到的问题 2022 04 28更 如何控制合成风格 2022 07 30更 contain dontcare label参数
  • 暗影精灵5怎么调风扇转速_遗憾与真香并存的性价比产品——暗影精灵6 AMD

    惠普暗影精灵6 AMD作为一台正面与联想拯救者R7000P对线的游戏本 自有消息以来就被玩家们寄托了很高的希望 纵然随着暗影精灵6 AMD的发布 大家对其期待值有所降低 但在如今游戏本集体无货的情况下它也是一个不错的选择 本文基于目前拿到的
  • 数据结构 算法大全 入门篇

    说到数据结构是什么 我们得先来谈谈什么叫数据 正所谓 巧妇难为无米之炊 再强大的计算机 也是要有 米 下锅才可以干活的 否则就是一堆破铜烂铁 这个 米 就是数据 数据 是描述客观事物的符号 是计算机中可以操作的对象 是能被计算机识别 并输入
  • vscode配置remote ssh

    1 安装插件 vscode配置remote ssh Hello wshuo的博客 CSDN博客 remote ssh vscode 设置界面 右键最左边tab栏 主体 vscode 插件 Remote SSH Linux主体 vscode
  • 【Complex-YOLO: 点云实时目标检测】

    Complex YOLO 点云实时目标检测 前言 要点分析 具体算法分析 点云转化鸟瞰图 提取特征 B Box损失回归 前言 Complex YOLO 论文中介绍是一种仅在点云上进行的最先进的实时3D目标检测网络 借鉴了yolo v2的主干
  • Java语言实现word转PDF(10分钟解决)

    前言 经常做OA办公项目的同学一定和我一样被各种线上的office操作整疯了 基本上涉及到Java操作office的时候就会想到POI和openoffice 这两种方案都是需要找各种jar包 然后用里面繁杂的api 关键是做出来的文件格式有