栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

OpenPDF 或 itex pdf模板生成多页PDF

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenPDF 或 itex pdf模板生成多页PDF

简介
  1. OpenPDF 是基于 itext4 开发的开源的jar
  2. itext5官方不再更新维护,开发的itext7绝大部分功能收费
  3. 下面代码是使用OpenPDF 开发,itext可参考
制作模板

使用Adobe Acrobat XI Pro制作模板,以下是个人方案

  1. 先使用wps,创建一个word,先绘制出来想要的表格,导出pdf

  2. 然后用Adobe Acrobat XI Pro 编辑,步骤如下:

    进入编辑界面,然后选择表单–编辑

    定义域的一般属性 名称 是否可见 只读 注意:在代码中通过获取该名称属性来进行对模板填值

代码

代码是一个pdf模板,复制到一个界面,实际情况,可循环,注意close

package com.lowagie.examples.forms.fill;

import com.lowagie.text.pdf.*;

import java.io.ByteArrayOutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;


public class Register {
    
    public static void main(String[] args) {
        System.out.println("Filling in a form");
        try {
            // 用Adobe Acrobat XI 编辑好的PDF模板
            PdfReader reader = new PdfReader("SimpleRegistrationForm.pdf");
            // 填充表单
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            PdfStamper stamp = new PdfStamper(reader, bos);
            AcroFields form = stamp.getAcroFields();
            form.setField("name", "Bruno Lowagie");
            form.setField("address", "Baeyensstraat 121, Sint-Amandsberg");
            form.setField("postal_code", "BE-9040");
            form.setField("email", "bruno@lowagie.com");
            stamp.setFormFlattening(true);
            stamp.close();
            PdfReader pdfReader = new PdfReader(bos.toByteArray());
            pdfReader.close();

            // 用Adobe Acrobat XI 编辑好的PDF模板
            PdfReader reader1 = new PdfReader("SimpleRegistrationForm.pdf");
            ByteArrayOutputStream bos1 = new ByteArrayOutputStream();
            PdfStamper stamp2 = new PdfStamper(reader1, bos1);
            AcroFields form2 = stamp2.getAcroFields();
            form2.setField("name", "Bruno Lowagie 6666");
            form2.setField("address", "Baeyensstraat 121, Sint-Amandsberg");
            form2.setField("postal_code", "BE-9040");
            form2.setField("email", "bruno@lowagie.com");
            stamp2.setFormFlattening(true);
            stamp2.close();
            PdfReader pdfReader1 = new PdfReader(bos1.toByteArray());
            pdfReader1.close();

            //复制上面两个pdf,用于一个模板多页pdf
            PdfCopyFields copy = new PdfCopyFields(Files.newOutputStream(Paths.get("registered.pdf")));
            //加权限,设置不可编辑,不提供密码,随机生成密码
            copy.setEncryption(false,null,null, PdfWriter.ALLOW_PRINTING);
            copy.addDocument(pdfReader);
            copy.addDocument(pdfReader1);
            copy.close();
        } catch (Exception de) {
            de.printStackTrace();
        }
    }
}

依赖


  com.github.librepdf
  openpdf
  1.3.28


	org.bouncycastle
	bcprov-jdk18on


	org.bouncycastle
	bcpkix-jdk18on

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996292.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号