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.rhkb.cn/news/382561.html

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

相关文章

代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?

代理IP协议是一种网络代理技术&#xff0c;可以实现隐藏客户端IP地址、加速网站访问、过滤网络内容、访问内网资源等功能。常用的IP代理协议主要有Socks5代理、HTTP代理、HTTPS代理这三种。代理IP协议主要用于分组交换计算机通信网络的互联系统中使用&#xff0c;只负责数据的路…

高效部署Modbus转MQTT网关:Modbus RTU、Modbus TCP转MQTT

钡铼Modbus转MQTT网关&#xff0c;简而言之&#xff0c;就是通过将Modbus协议&#xff08;包括Modbus RTU和Modbus TCP&#xff09;的数据转换为MQTT协议的数据格式&#xff0c;从而实现设备数据的上传和云端控制指令的下发。这一转换过程使得设备能够与基于MQTT协议的云平台进…

修改 Tomcat 默认端口号最简单的方法

前言 每次在创建一个新的Maven项目之后&#xff0c;启动项目总会报8080端口号被占用的问题&#xff0c;既然每次都有这样的困扰&#xff0c;那不如一了百了&#xff0c;直接修改默认的8080端口号。 &#xff08;如果还是想要默认端口号。可参考我主页文章杀死占用了8080的进程…

CSA笔记4-包/源管理命令以及本地光盘仓库搭建

包/源管理命令 1.rpm是最基础的rmp包的安装命令&#xff0c;需要提前下载相关安装包和依赖包 2.yum/dnf是基于rpm包的自动安装命令&#xff0c;可以自动在仓库中匹配安装软件和依赖包 注意:以上是安装命令&#xff0c;以下是安装源 3.光盘源&#xff1a;是指安装系统时后的…

Pytorch TensorBoard的使用

from torch.utils.tensorboard import SummaryWriter writer SummaryWriter("logs")for i in range(100):writer.add_scalar("yx",i,i) writer.close() 第一个参数 y2x: 这是图表的标题或标签。它会显示在TensorBoard界面中,帮助你识别这条曲线。 第二个参…

【分布式锁】Redission实现分布式锁

接着上一节&#xff0c;我们遇到了超卖的问题&#xff0c;并通过Redis实现分布式锁&#xff0c;进行了解决。本节 我将换一种方式实现分布式锁。 前提&#xff1a; nginx、redis、nacos 模块1&#xff1a; provider-and-consumer 端口 8023 模块2 rabbitmq-consumer 端口 8021 …

opencascade AIS_InteractiveContext源码学习9 obsolete methods

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…

CSS3雷达扫描效果

CSS3雷达扫描效果https://www.bootstrapmb.com/item/14840 要创建一个CSS3的雷达扫描效果&#xff0c;我们可以使用CSS的动画&#xff08;keyframes&#xff09;和transform属性。以下是一个简单的示例&#xff0c;展示了如何创建一个类似雷达扫描的动画效果&#xff1a; HTM…

使用uniapp开发小程序(基础篇)

本文章只介绍微信小程序的开发流程&#xff0c;如果需要了解其他平台的开发的流程的话&#xff0c;后续根据情况更新相应的文章,也可以根据uniapp官网的链接了解不同平台的开发流程 HBuilderX使用&#xff1a;https://uniapp.dcloud.net.cn/quickstart-hx.html 开发工具 开始…

Go基础编程 - 11 - 函数(func)

接口&#xff08;interface&#xff09; 函数1. 函数定义1.1. 函数名1.2. 参数列表1.3. 返回值列表 2. 匿名函数3. 闭包、递归3.1 闭包3.1.1 函数、引用环境3.1.2 闭包的延迟绑定3.1.3 goroutine 的延迟绑定 3.2 递归函数 4. 延迟调用&#xff08;defer&#xff09;4.1 defer特…

C++客户端Qt开发——Qt窗口(工具栏)

2.工具栏 使用QToolBar表示工具栏对象&#xff0c;一个窗口可以有多个工具栏&#xff0c;也可以没有&#xff0c;工具栏往往也可以手动移动位置 ①设置工具栏 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QToolBar> #include<…

责任链模式的应用与解析

目录 责任链模式责任链模式结构责任链模式适用场景责任链模式优缺点练手题目题目描述输入描述输出描述题解 责任链模式 责任链模式&#xff0c;亦称职责链模式、命令链&#xff0c;是一种行为设计模式&#xff0c;允许你将请求沿着处理者链进行发送。收到请求后&#xff0c;每…

H3CNE(OSPF动态路由)

7.1 静态路由的缺点与动态路由分类 7.1.1 静态路由的缺点 7.1.2 动态路由的分类 OSPF运行的机制&#xff1a; 1. 每个设备产生LSA后&#xff0c;都会与其他的设备同步LSA&#xff0c;通过OSPF的报文&#xff0c;去发送与接受其他的LSA&#xff0c;最终目的是每个设备都有全网所…

【BUG】已解决:ModuleNotFoundError: No module named ‘requests‘

ModuleNotFoundError: No module named ‘requests‘ 目录 ModuleNotFoundError: No module named ‘requests‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&a…

Java面试题(每日更新)

每日五道&#xff01;学会就去面试&#xff01; 本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单&#xff0c;下面一起进入主题吧。 目录 1.概述 2.Java 基础 2.1 JDK 和 JRE 有什么区别&#xff1f; 2.2 和 equals 的区别是什么&#xff1f; 2.3 两个对象的…

【LeetCode】86.分割链表

1. 题目 2. 分析 这题没有太大难度&#xff0c;主要是熟悉代码。 3. 代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def partition(self, he…

SQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN

在SQL中&#xff0c;JOIN操作是连接两个或多个数据库表&#xff0c;并根据两个表之间的共同列&#xff08;通常是主键和外键&#xff09;返回数据的重要方法。其中&#xff0c;LEFT JOIN&#xff08;左连接&#xff09;、RIGHT JOIN&#xff08;右连接&#xff09;和INNER JOIN…

windows服务器启动apache失败,提示请通过cmd命令行启动:net start apache

Windows Server 2012 R2服务器突然停止运行apche&#xff0c;启动apache失败&#xff0c;提示请通过cmd命令行启动:net start apache 1.报错截图&#xff1a; 进入服务里输入命令启动也不行&#xff0c;提示由于登录失败而无法启动服务。 2.问题原因&#xff1a; 服务器www用…

Yolo-World网络模型结构及原理分析(三)——RepVL-PAN

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1. 网络结构2. 特征融合3. 文本引导&#xff08;Text-guided&#xff09;4. 图像池化注意力&#xff08;Image-Pooling Attention&#xff09;5. 区域文本匹配&…

Invalid bound statement (not found)

Invalid bound statement (not found) 首先申明的是这个错误一般是使用mybatis方法没有找到或者参数不匹配等原因造成的&#xff01; 原本项目是使用eclipse运行&#xff0c;导入到idea之后&#xff0c;项目启动就报错 …Invalid bound statement (not found)… 解决办法&#…