首页 > 其他分享 >pageoffice6后台生成单个PDF文档

pageoffice6后台生成单个PDF文档

时间:2024-03-01 14:13:54浏览次数:28  
标签:文件 Word doc 生成 pageoffice6 文档 PDF

转载:后台生成单个PDF文档

# 后台生成单个PDF文档

注意

本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

在实际项目中经常遇到这样的场景,客户希望后台动态生成PDF文档,目前网上有一些针对此需求的方案,如果您想要了解这些方案的对比,请查看后台生成单个Word文档中的“方案对比”。

PageOffice 针对此需求开发了 FileMaker 组件,该组件完全符合 PageOffice 的架构设计,FileMaker 在客户端动态生成 Office 文档,并自动另存为PDF格式上传到服务器,但是不在客户端打开显示文档,看起来就好像是在服务器端直接生成的PDF文件。

FileMakerCtrl 和 PageOfficeCtrl 的区别

FileMakerCtrl 本质上就是一个没有界面的 PageOfficeCtrl,也是调用客户端 Office 程序处理文件的,都可以实现对文档进行动态填充、动态转 PDF 等功能,唯一的区别就是 FileMakerCtrl 在线打开填充和转换文档的时候,客户端页面不打开显示文档内容,而 PageOfficeCtrl 会打开显示文档内容。

下面就以生成一份荣誉证书的效果为例,介绍一下如何使用FileMaker组件动态生成PDF文档。

  1. 需求效果:用户点击生成pdf文件按钮,执行程序把某公司信息动态填充到荣誉证书Word模板中,并另存生成为一份PDF格式的荣誉证书文件。

  2. 荣誉证书Word模板如下图所示,为了简单起见,模板中只使用了公司名称来代表公司的所有信息,所以只用了一个数据区域“PO_company”来标记公司名称的位置。

  3. 点击按钮后,执行把公司信息动态填充到Word模板中生成荣誉证书的后台代码(比如:FileMakerPDF.jsp),在服务器端文件夹下生成一份荣誉证书文件:zhengshu.pdf,文件内容如下图所示。

# 后端代码

  1. 在后端编写代码实现Word文档动态填充并另存为pdf(比如FileMakerPDF.jsp),关键代码如下:
// 获取id后可以根据id从数据库中查询公司信息,为简单起见,就不再演示
String id = request.getParameter("id"); 
FileMakerCtrl fmCtrl = new FileMakerCtrl(request);
WordDocument doc = new WordDocument();
//给数据区域赋值,即把数据填充到模板中相应的位置
doc.openDataRegion("PO_company").setValue("北京卓正志远软件有限公司");
fmCtrl.setSaveFilePage("SaveMaker.jsp");
fmCtrl.setWriter(doc);
fmCtrl.fillDocumentAsPDF("doc/template.doc", DocumentOpenType.Word, "zhengshu.pdf");

2.保存文件:在SaveFilePage指向的地址接口中,创建FileSaver对象保存文件。

FileSaver fs = new FileSaver(request, response);
String fileName = fs.getFileName();
fs.saveToFile(request.getSession().getServletContext().getRealPath("FileMakerPDF/doc") + "/" + fileName);
fs.close();

# 前端代码

编写前端网页代码,调用执行后端生成PDF文件代码,并实现生成文件进度条的效果。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title></title>
    <script type="text/javascript" src="../pageoffice.js"></script>
    <script type="text/javascript">
        function ConvertFile() {
            document.getElementById("Button1").disabled = true;
            CallFileMaker({
                url: "FileMakerPDF.jsp?id=1", // FileMakerPDF.jsp 实现动态生成文件
                success: function () {
                    setProgress(100);
                },
                progress: function (pos) {
                    setProgress(pos);
                },
                error: function (msg) {
                    console.log("error occurred: "+msg);
                }
            });
        }
        function setProgress(percent) {
            var progressBar = document.getElementById("progressBar");
            progressBar.style.width = percent + '%';
            progressBar.innerText = percent + '%';
        }
    </script>
    <style>
      #progressBarContainer {
        width: 500px;
        background-color: #e0e0e0;
        border-radius: 5px;
        padding: 3px;
        margin: 10px auto;
      }
      #progressBar {
        height: 20px;
        width: 0%;
        background-color: #76b900;
        border-radius: 5px;
        text-align: center;
        line-height: 20px; 
        color: white;
      }
    </style>
</head>
<body>
    <div style="text-align: center;">
        <h3 style="margin:20px;">演示:填充数据到Word模板生成PDF文件的效果</h3>
        <input id="Button1" type="button" value="生成PDF文件" onclick="ConvertFile()"/>
        <div id="progressBarContainer">
          <div id="progressBar"></div>
        </div>
    </div>
</body>
</html>

标签:文件,Word,doc,生成,pageoffice6,文档,PDF
From: https://www.cnblogs.com/lhl77/p/18046920

相关文章

  • 软考高级信息系统项目管理师教程(第4版)PDF下载
    《信息系统项目管理师教程》(第4版)是由全国计算机专业技术资格考试办公室组织编写的考试用书,根据2022年审定通过的《信息系统项目管理师考试大纲》编写,对信息系统项目管理师岗位所要求的主要知识及应用技术进行了阐述。《信息系统项目管理师教程》(第4版)主要内容包括:信息化发展、信......
  • 【专题】2024食品行业预制菜趋势报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35240原文出处:拓端数据部落公众号预制菜行业经历了由默默无闻到备受争议,再到如今逐渐获得大众接受的历程。随着《中央一号文件》的推动,除夕节假日的利好安排,以及行业内对半年内有望出台国家标准的期待,预制菜行业吸引了众多头部主播的关注和数亿网......
  • 【专题】2022工业互联网平台发展指数报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33647这份报告合集是基于中国工业产业升级和智能制造的大背景而展开的。报告合集分析了工业互联网平台市场的发展阶段、平台玩家的产品和服务的底层逻辑以及变化趋势,并探讨了补贴减少、数据归属权之争、标准化与盈利模式、ChatGPT等因素对工业互联......
  • 技术文档 | 使用 OpenSCA 批量扫描 Gitlab 仓库,盘点资产安心过节
    按照下述教程快速批量扫描您的仓库,一旦新的攻击或0Day出现,通过资产清单即可快速定位漏洞及影响范围、有效缩短响应时间。安装opensca-cli方法一:一键安装-Windows(需要PowerShell)iex"&{$(irmhttps://raw.githubusercontent.com/XmirrorSecurity/OpenSCA-cli/master/script......
  • 从“[微信支付-现金红包]开发文档”来看接口文档和系统设计
    【微信支付】现金红包开发者文档:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1  文档特色1红包是什么?--在“产品说明”里图文并茂地有介绍。 数据词典-命名方面的瑕疵 红包的命名:发放红包接口名“sendredpack”里,“红包”命名为“......
  • PDF相关操作
    PDF相关操作word转pdfpublicstaticvoidwordConvertPdf(FiletargetFile,Filefile)throwsException{FileOutputStreamos=newFileOutputStream(file); //Address是将要被转化的word文档Documentdoc=newDocument(targetFile.getAbsolut......
  • WPS编辑的文档,用office打开很多内容不显示
    原文链接:https://wenda.so.com/q/1483656327728206?src=180&q=WPS%E7%BC%96%E8%BE%91%E7%9A%84%E6%96%87%E6%A1%A3%EF%BC%8C%E7%94%A8office%E6%89%93%E5%BC%80%E5%BE%88%E5%A4%9A%E5%86%85%E5%AE%B9%E4%B8%8D%E6%98%BE%E7%A4%BA版本兼容性问题,朋友建议我另存为pdf格式文档。网......
  • 【专题】2024物联网平台产业研究报告及案例集报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35235原文出处:拓端数据部落公众号前三季度,我国软件业务收入达87610亿元,同比增长13.5%。统计范围涵盖软件及信息技术服务、集成电路设计、基础软件、工业软件、信息安全、工业互联网平台和数据服务等。软件业务收入由软件产品、信息技术服务、信息......
  • PDF文件太大如何免费压缩到最小?
    又到了一年一度找工作高峰期了,为了防止发送的简历文档排版错乱,一般都是采用PDF格式。但有时在投递简历时,附上过大的附件(比如设计岗位),这样就会影响发送和对方打开查看的效率。那么pdf如何快速免费压缩大小呢?教你2个无需安装软件的简单方法。方法一:操作系统自带压缩功能这是一种......
  • createRange表示文档中的一个范围——用于js判断文字添加省略号情况
    document.createRange()是JavaScript中的一个方法,用于创建一个Range对象,表示文档中的一个范围。Range对象通常用于选择文档中的一部分内容,然后对其进行操作。它可以:设置选中文本范围:可以使用document.createRange()方法创建一个Range对象,并使用setStart()和setEnd(......