Java使用AsposePDF和AsposeWords进行表单填充

声明:本文为作者Huathy原创文章,禁止转载、爬取!否则,本人将保留追究法律责任的权力!

文章目录

  • AsposePDF填充表单
    • adobe pdf表单准备
    • 引入依赖
    • 编写测试类
  • AsposeWord表单填充
    • 表单模板准备与生成效果
    • 引入依赖
    • 编码
  • 参考文档

AsposePDF填充表单

adobe pdf表单准备

参考文档:Adobe创建和分发 PDF 表单
我们使用:adobe的Adobe Acrobat DC来编辑PDF准备表单,首先打开PDF,点击更多工具,点击准备表单,添加文本域。

在这里插入图片描述

在这里插入图片描述

引入依赖

<dependency><groupId>com.aspose</groupId><artifactId>aspose-pdf</artifactId><version>21.11</version>
</dependency>

编写测试类

package com.hx.pdf;import cn.hutool.core.date.DateUtil;
import com.aspose.pdf.facades.DocumentPrivilege;
import com.aspose.pdf.facades.PdfFileSecurity;import java.util.Date;/*** @author Huathy* @version 1.0* @description: TODO* @date 2024/7/21 10:55*/
public class PdfTest1 {public static void main(String[] args) {fillPdfText();}private static void fillPdfText() {//导入必要的类//打开现有的 PDF 文档com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("E:\\temp\\表单模板.pdf");//通过名称访问表单字段com.aspose.pdf.TextBoxField textBoxField = (com.aspose.pdf.TextBoxField) pdfDocument.getForm().get("name");//设置表单字段的值textBoxField.setValue("Huathy");//通过名称访问表单字段com.aspose.pdf.TextBoxField textBoxField1 = (com.aspose.pdf.TextBoxField) pdfDocument.getForm().get("date");//设置表单字段的值textBoxField1.setValue(DateUtil.formatDate(new Date()));//通过名称访问表单字段com.aspose.pdf.TextBoxField textBoxField2 = (com.aspose.pdf.TextBoxField) pdfDocument.getForm().get("time");//设置表单字段的值textBoxField2.setValue(DateUtil.formatTime(new Date()));// 填充后禁止编辑PdfFileSecurity fileSecurity = new PdfFileSecurity(pdfDocument);fileSecurity.setPrivilege(DocumentPrivilege.getForbidAll());//保存修改后的PDFpdfDocument.save("E:\\temp\\填充表单模板.pdf");}
}

AsposeWord表单填充

表单模板准备与生成效果

使用word邮件合并
在这里插入图片描述
效果
在这里插入图片描述

引入依赖

 <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>20.3</version>
</dependency>

编码

package com.hx.word;import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import com.aspose.words.Document;
import com.aspose.words.DocumentBuilder;
import com.aspose.words.License;import java.io.ByteArrayInputStream;
import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;/*** @author Huathy* @version 1.0* @description: TODO* @date 2024/7/21 10:55*/
public class WordTest1 {/** 加载 license* 由于 aspose是收费的,若没有 license,则会出现水印。*/static {try {String license ="<License>\n" +"  <Data>\n" +"    <Products>\n" +"      <Product>Aspose.Cells for Java</Product>\n" +"      <Product>Aspose.Words for Java</Product>\n" +"      <Product>Aspose.Slides for Java</Product>\n" +"    </Products>\n" +"    <EditionType>Enterprise</EditionType>\n" +"    <SubscriptionExpiry>yyyyMMdd</SubscriptionExpiry>\n" +"    <LicenseExpiry>yyyyMMdd</LicenseExpiry>\n" +"    <SerialNumber>UUID</SerialNumber>\n" +"  </Data>\n" +"  <Signature>Huathy</Signature>\n" +"</License>";new License().setLicense(new ByteArrayInputStream(license.getBytes("UTF-8")));} catch (Exception e) {e.printStackTrace();throw new RuntimeException("自动加载aspose证书文件失败!");}}public static void main(String[] args) throws Exception {fillWordText();}private static void fillWordText() throws Exception {// Create a new Word documentDocument doc = new Document("E:\\temp\\表单模板.docx");// Adding text to the documentDocumentBuilder builder = new DocumentBuilder(doc);String text = "\t\t贵单位,由于XXX问题存在安全隐患,请贵单位及时整改!\n" +"\t 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测测试测试测试试" +"测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试\n" +" \t并将整改报告汇报给我单位验收!";Map<String, String> toData = new HashMap<String, String>() {{put("org", "测试单位");put("text", text);put("date", DateUtil.formatDateTime(new Date()));}};String[] fieldNames = new String[toData.size()];String[] values = new String[toData.size()];int i = 0;for (Map.Entry<String, String> entry : toData.entrySet()) {fieldNames[i] = entry.getKey();values[i] = entry.getValue();i++;}doc.getMailMerge().execute(fieldNames, values);// Save the documentdoc.save("E:/temp/output202407.docx");}
}

参考文档

使用 Java 填充 PDF 文档中的表单字段
使用 Java 在 MS Word 文档中合并邮件

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

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

相关文章

【C语言】链式队列的实现

队列基本概念 首先我们要了解什么是队列&#xff0c;队列里面包含什么。 队列是线性表的一种是一种先进先出&#xff08;First In Fi Out&#xff09;的数据结构。在需要排队的场景下有很强的应用性。有数组队列也有链式队列&#xff0c;数组实现的队列时间复杂度太大&#x…

【数据结构 | 哈希表】一文了解哈希表(散列表)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

虚拟局域网配置与分析-VLAN

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、相关知识 虚拟局域网&#xff08;Virtual Local Area Network&#xff0c;VLAN&#xff09;是一组逻辑上的设备和用户&#xff1b;不受物理位置的…

浅谈监听器之保存响应到文件

浅谈监听器之保存响应到文件 JMeter 提供了一个实用的监听器——“保存响应到文件”&#xff0c;该监听器能够自动将取样器的响应数据直接保存到指定的文件中&#xff0c;便于后续分析或存档。本文档旨在详细介绍如何配置和使用此监听器功能。 适用场景 ● 长时间运行的测试…

昇思25天学习打卡营第n天|本地安装mindspore之二|开始第一课的代码。以及对比xshell,MobaXterm

开始准备在本地的系统上跑例子了。从第一课开始吧。 1&#xff0c;下载代码 打开课程。 下载样例代码 https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/r2.3/tutorials/zh_cn/beginner/mindspore_quick_start.py 2&#xff0c;在本地Linux上输入并运…

Python新手如何制作植物大战僵尸?这篇文章教会你!

引言 《植物大战僵尸》是一款非常受欢迎的塔防游戏&#xff0c;玩家需要种植各种植物来抵御僵尸的进攻。在这篇文章中&#xff0c;我们将使用Python编写一个简化版的植物大战僵尸游戏&#xff0c;以展示如何使用Python创建游戏。 游戏规则 玩家将种植不同类型的植物来防御僵尸…

好用的电脑录屏软件免费推荐,拥有这3款就能高效录屏!

电脑录屏软件已成为我们记录生活、分享知识的得力助手。但是&#xff0c;市面上琳琅满目的录屏软件令人眼花缭乱&#xff0c;如何才能选择到一款好用的电脑录屏软件免费神器呢&#xff1f;今天&#xff0c;就让我来为您揭晓这个秘密&#xff01; 首先&#xff0c;我们得明确一…

胖东来也要加入“打水仗”?瓶装水品牌又该如何出招

今年瓶装水行业的“战场”似乎格外热闹&#xff0c;比武汉的天气好像还要火热......从年头农夫山泉打出“纯净水”的牌&#xff0c;再到如今掀起价格内卷战&#xff0c;一箱12瓶的纯净水在某宝平台上仅售9.9元&#xff0c;平均下来每瓶单价不超一元&#xff0c;农夫山泉都出击了…

自动化网络爬虫:如何它成为提升数据收集效率的终极武器?

摘要 本文深入探讨了自动化网络爬虫技术如何彻底改变数据收集领域的游戏规则&#xff0c;揭示其作为提升工作效率的终极工具的奥秘。通过分析其工作原理、优势及实际应用案例&#xff0c;我们向读者展示了如何利用这一强大工具加速业务决策过程&#xff0c;同时保持数据收集的…

5G mmWave PAAM 开发平台

Avnet-Fujikura-AMD 5G 毫米波相控阵天线模块开发平台 Avnet 和 Fujikura 为毫米波频段创建了一个领先的 5G FR2 相控阵天线开发平台。该平台使开发人员能够使用 AMD Xilinx 的 Zynq UltraScale™ RFSoC Gen3 和 Fujikura 的 FutureAcess™ 相控阵天线模块 (PAAM) 快速创建和制…

算法日记day 18(二叉树的所有路径|左叶子之和)

一、二叉树的所有路径 题目&#xff1a; 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->…

抖音矩阵管理系统解决方案:一站式服务

在当今社交媒体蓬勃发展的时代&#xff0c;抖音作为一款短视频平台&#xff0c;凭借其独特的魅力和庞大的用户群体&#xff0c;已成为众多企业、个人乃至网红达人展示自我、推广品牌的重要舞台。然而&#xff0c;随着抖音账号数量的不断增加&#xff0c;如何高效、专业地管理这…

系统编程--Linux下文件的“其他操作”函数

这里写目录标题 文件存储理论补充dentry、inode 文件其他操作stat函数作用函数原型代码&#xff08;以获取文件大小为例&#xff09;补充&#xff08;获取文件类型&#xff09; lstat函数作用函数原型代码补充&#xff08;获取文件权限&#xff09;总结 tipslink函数作用简介函…

前端页面:用户交互持续时间跟踪(duration)user-interaction-tracker

引言 在用户至上的时代&#xff0c;精准把握用户行为已成为产品优化的关键。本文将详细介绍 user-interaction-tracker 库&#xff0c;它提供了一种高效的解决方案&#xff0c;用于跟踪用户交互的持续时间&#xff0c;并提升项目埋点的效率。通过本文&#xff0c;你将了解到如…

使用水星Mecury人形机器人搭建VR遥操作控制平台!

VR遥操作机械臂是一种将虚拟现实技术与机械臂控制相结合的系统&#xff0c;使用户可以通过虚拟现实设备操控和交互实际的机械臂。这种技术可以应用于多个领域&#xff0c;包括远程操作、培训、危险环境中的工作等。 双臂人形机器人是一种模拟人体上半身结构&#xff0c;包括头部…

跨域浏览器解决前端跨域问题

1.问题背景 这是一种属于非主流的解决跨域的方案&#xff0c;但是也是可以正常使用而且比较简单的。如果需要使用主流的解决前端跨域方案&#xff0c;请参考这篇文章。 我这边其实是优先建议大家使用主流的跨域方案&#xff0c;如果主流的实在不行&#xff0c;那么就使用跨域…

多路复用IO、TCP并发模型

时分复用 CPU单核在同一时刻只能做一件事情&#xff0c;一种解决办法是对CPU进行时分复用(多个事件流将CPU切割成多个时间片&#xff0c;不同事件流的时间片交替进行)。在计算机系统中&#xff0c;我们用线程或者进程来表示一条执行流&#xff0c;通过不同的线程或进程在操作系…

通过POST请求往Elastic批量插入数据

文章目录 引言I 请求文档请求参数请求例子引言 调试工具:Apifox 需求: 向Elasticsearch中的’test_index’索引批量插入文档 情况认证: Basic Auth 在 Header 添加参数 Authorization,其值为在 Basic 之后拼接空格,以及经过 Base64 编码的 {{Username}}:{{Password}} 示…

H3CNE(STP)

8.1 二层环路与STP的介绍 8.1.1 二层环路 8.1.2 冲突域 8.1.3 二层环路带来的问题 8.1.4 STP的基本概念&#xff1a;桥ID 8.1.5 STP的基本概念&#xff1a;根桥 8.1.6 STP的基本概念&#xff1a;Cost 8.1.7 STP的基本概念&#xff1a;Port ID 8.1.8 STP的基本概念&#xff1a;…

Ubuntu22.04下 MySQL8创建并使用存储过程

在Ubuntu下的MySQL 8中创建并使用存储过程&#xff1a; 使用mysql命令登录到MySQL服务器&#xff0c;例如&#xff1a; mysql -u root -p输入root用户的密码。 选择你想要创建存储过程的数据库&#xff0c;例如&#xff1a; CREATE DATABASE mydb;USE mydb;CREATE TABLE us…