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

Pageoffice6 实现后台生成单个PDF文档

时间:2024-02-27 15:56:55浏览次数:15  
标签:文件 Word doc 生成 Pageoffice6 文档 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”来标记公司名称的位置。
    image

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

后端代码

  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");
  1. 保存文件:在SaveFilePage指向的地址接口中,创建FileSaver对象保存文件。
FileSaver fs = new FileSaver(request, response);
String fileName = fs.getFileName();
fs.saveToFile(request.getSession().getServletContext().getRealPath("FileMakerPDF/doc") + "/" + fileName);
fs.close();

前端代码

  1. 编写前端网页代码,调用执行后端生成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/qq742655/p/18037016

相关文章

  • 数据提取PDF SDK的对比推荐
    PDF已迅速成为跨各种平台共享和分发文档的首选格式,它作为一种数据来源,常见于公司的各种报告和报表中。为了能更好地分析、处理这些数据信息,我们需要检测和提取PDF中的数据,并将其转换为可用且有意义的格式。而数据提取的PDFSDK,可以集成在应用程序或内部系统中,能更加有效地提高......
  • 【专题】2023年金融、保险、银行行业报告汇总PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35149原文出处:拓端数据部落公众号自中国提出双碳目标以来,可持续金融市场呈现出蓬勃发展的态势。这一发展趋势在多年来得到可持续金融战略咨询团队的支持和推动。同时,数字化转型的深入推进推动了新客户的增长,而中国的碳金融创新也成为市场关注的焦......
  • 【机器学习科学库】全md文档笔记:Matplotlib详细使用方法(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论人工智能相关知识。主要内容包括,了解机器学习定义以及应用场景,掌握机器学习基础环境的安装和使用,掌握利用常用的科学计算库对数据进行展示、分析,学会使用jupyternotebook平台完成代码编写运行,应用Matplotlib的基本功能实现图形显示,应用Matplotlib......
  • isaac sim 文档翻译
    目录4.1.HelloWorld4.1.1.LearningObjectives4.1.2.GettingStarted4.1.3.CodeOverview4.1.3.1.SingletonWorld4.1.4.AddingtotheScene4.1.5.InspectingObjectProperties4.1.5.1.ContinuouslyInspectingtheObjectPropertiesduringSimulation4.1.6.Addin......
  • 【Django开发】0到1开发美多shop项目:用户登录模块开发。全md文档笔记(附代码 文档)
    本系列文章md笔记(已分享)主要讨论django商城项目相关知识。项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django+Jinja2模板引擎+Vue.js实现前后端逻辑,Nginx服务器(反向代理)Nginx服务器(静态首页、商品详情页、uwsg......
  • PDFUtils (解析PDF 中的文本 和 图片 PDF 转 HTML HTML 转 PDF)
    引入pdfbox依赖<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.19</version></dependency>packagecom.icil.swif......
  • 前端根据生成的文档流下载、预览文档
    下载:axios({  url:`url`,  method:"post",  data:{   参数...  },  responseType:"blob", }).then((res)=>{constlink=document.createElement("a");   letblob=newBlob([res.data],{type:"......
  • 如何使用ilovepdf中文在线转换
    iLovePDF是一个多功能的PDF文件处理应用,它提供了一个中文版的版本,适合中国用户使用。无需下载和安装,直接打开网页就能快速使用,以下是关于如何使用iLovePDF中文版的步骤指南:ilovepdf在线转换的使用方法1.打开ilovepdf官网:在浏览器中输入ilovepdf的官方网址,进入官网首页。2.选......
  • Java - 将TXT文本文件转换为PDF文件
    与TXT文本文件,PDF文件更加专业也更适合传输,常用于正式报告、简历、合同等场合。项目中如果有使用Java将TXT文本文件转为PDF文件的需求,可以查看本文中介绍的免费实现方法。 免费JavaPDF库本文介绍的方法需要用到FreeSpire.PDFforJava,该免费库支持多种操作、转换PDF文档的功......
  • Java 使用 itext 向PDF插入数据和图片
    Java使用itext向PDF插入数据和图片一、下载AdobeAcrobatDC二、制作模板1、准备一个word模板,并转换成PDF格式2、使用AdobeAcrobatDC打开PDF文档,并在右侧搜索框搜索表单,点击准备表单 3、点击开始,制作PDF表单 4、扫描完成后如下图,蓝白色框就是可编辑表单......