自学内容网 自学内容网

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

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

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());
        //保存修改后的PDF
        pdfDocument.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 document
        Document doc = new Document("E:\\temp\\表单模板.docx");
        // Adding text to the document
        DocumentBuilder 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 document
        doc.save("E:/temp/output202407.docx");
    }
}

参考文档

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


原文地址:https://blog.csdn.net/qq_40366738/article/details/140584766

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!