java套打pdf做模版itext填数据

JAVA根据模板填充,生成PDF文件 项目场景: 需求:根据客户模板,生成对应PDF文件。 例如:客户的doc模板文件: 最终效果展示: 话不多说,上操作: 1.引入pdf相关的依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> </dependency> <! 阅读详情

企业应用的项目开发,一定会遇到打印,也一定有套打的需求,比如打印报销单据了,打印发票了什么的。

接上次用word2003和excel2003实现快递单套打的临时解决方案后,今天说说java程序实现套打。

模版选择的是pdf,这个也是国外用的多的,需要安装Adobe Acrobat。

首先,创建pdf文件,工具栏-》页面-》裁剪。


工具栏-》页面-》背景,设置顺丰速运的快递单扫描件为背景。

双击页面,弹出页面大小设置窗口,设置大小,以顺丰为例230mm*127mm。


工具栏-》表单-》编辑,添加12个文本域。


删除背景图片,保存pdf为《顺丰速运模版2.0.pdf》

================================================

JAVA程序实现,新建一个maven工程,pom.xml增加itext的依赖

<packaging>war</packaging>

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.9</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext-pdfa</artifactId>
        <version>5.5.9</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext-xtra</artifactId>
        <version>5.5.9</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf.tool</groupId>
        <artifactId>xmlworker</artifactId>
        <version>5.5.9</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext-asian</artifactId>
        <version>5.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>

itext-asian是支持中文字体的。

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.reset();

        ByteArrayOutputStream ba = new ByteArrayOutputStream();
        try {
            String pdfTemplate = "/Users/me/Downloads/顺丰速运模版2.0.pdf";
            PdfReader reader = new PdfReader(pdfTemplate);

            PdfStamper stamper = new PdfStamper(reader, ba);

            Image img = Image.getInstance("/Users/me/Documents/顺丰速递快递单.jpg");
            img.setAbsolutePosition(0,0);
            img.scaleToFit(reader.getPageSize(1));
            PdfContentByte under = stamper.getUnderContent(1);
//            under.addImage(img,img.getScaledWidth(),0,0,img.getScaledHeight(),0,0);
//            under.addImage(img);

            BaseFont bf = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

            AcroFields form = stamper.getAcroFields();
            form.addSubstitutionFont(bf);
            form.setFieldProperty("companyOfSender", "textfont", bf, null);
            form.setField("companyOfSender","上海XXX有限公司");
            form.setField("sender", "张XX");
            form.setField("addressOfSender", "上海市XX区XX路XX号XX大厦XX楼");
            form.setField("phoneOfSender", "13800210021");
            form.setField("companyOfReceiver", "xxxxxxxxxx");
            form.setField("receiver", "李XX");
            form.setField("province", "上海");
            form.setField("city", "上海");
            form.setField("district", "徐汇");
            form.setField("road", "虹漕路");
            form.setField("room", "XXX号XXX室");
            form.setField("phoneOfReceiver", "13999999999");
            stamper.setFormFlattening(true);

            stamper.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        resp.setContentType("application/pdf");
//        resp.setHeader("Content-disposition", "attachment; filename=report.pdf");
        resp.setContentLength(ba.size());
        ServletOutputStream out = resp.getOutputStream();
        ba.writeTo(out);
        out.flush();
        out.close();
        ba.close();
    }

通过控制水印图片的增加与否under.addImage(img);,区分节目展示和实际打印。


Java使用lowagie根据模版动态生成PDF(无需额外设置系统字体) Java动态生成pdf文件 阅读详情

相关推荐

java根据模板导出pdf(动态增加模板页数)

java根据模板导出pdf(动态增加模板页数) 这两天碰到了一个根据模板导出pdf的需求,研究了几天以后,发现网上的资料不太齐全,主要是没找到既根据模板导出,又可以动态增加页数的例子。只能通过各种资料结合来实现这个需求了(其实是懒得看iText英文文档,这个以后得改过来)。 下面先来说下pdf导出主要的两种方式: 1.直接使用iText的api,写出原生的pdf文档,但是样式和排版很难控制,...

qq_31539265的博客 6724

itext实现PDF模板套打java,生成电子合同电子收据电子发票

文本域用“Adobe Acrobat DC”自己画了一个。 也可以用Jasper做(补充)。

z445803550的博客 3129

itext - PDF模板套打

项目需求:获取列表数据之后直接将数据生成一个pdf。因此需要使用到对pdf进行直接操作。

m0_56308072的博客 2600

如何使用java 根据模板生成pdf,适用于银行套打

银行如何使用 java 实现pdf文件套打

weixin_37751422的博客 888

Java用itext工具根据模板生成PDF

iText是用于生成PDF文档的一个java类库,本文介绍Java如何用itext工具根据模板生成PDF。

zhiwenganyong的博客 4222

IText更改pdf模板数据并导出

1.导入maven相关依赖&lt;dependency&gt; &lt;groupId&gt;com.itextpdf&lt;/groupId&gt; &lt;artifactId&gt;itextpdf&lt;/artifactId&gt; &lt;version&gt;5.4.3&lt;/version&gt; &lt;/dependency&gt;

咸鱼哥哥的博客 4114

为何选择iText?java PDF开源库选择与iText发展历史

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;转眼间,我写iText7系列已经有一年多了,还记得最开始的时候是因为兴趣才翻译iText,不过随着慢慢翻译文章才发现iText的强大之处,最近也是调研了整个java PDF开源库的生态圈,我给大家详细讲一下java PDF开源库的选择还有我选择iText的理由。 1. 源起PDF 1.1 PDF定义 &amp;nbsp;&amp;nbsp;&amp;nbsp;

CuteKe的专栏 3万+

通过Adobe Acrobat DC和iText.jar完成通过pdf模板生成pdf

iText也可以结合着工具来完成pdf绘制,可以往Adobe Acrobat DC生成的pdf模型进行填值。通知书类似的pdf可以使用该方法进行绘制,只需要将pdf模型提前设定好,这样一般来说可以做的更漂亮。代码如下:package com.test; import java.io.*; import java.util.*; import com.lowagie.text.*; import ...

csdn15679160266的博客 1979

java使用itext生成复杂数据的pdf

Apache iText 是一个开源 Java 库,支持 PDF 文档的开发和转换。在本教程中,我们将学习如何使用 iText 开发可以创建、转换和操作 PDF 文档的 Java 程序。

wys0127的博客 2023

Java PDF模板套打实战:二维码、文字与表格插入

PDF文件格式以固定版面呈现文档内容,这意味着文档的布局、字体、图形及其他元素会固定下来,不因设备而改变。文档创建时,可以利用各种软件如Adobe Acrobat或开源工具等,将纸质文档、文字处理文件、电子表格等转换成PDF格式。iText库通过Java编程语言提供了一个强大的PDF处理平台,开发者可以利用这个库来创建PDF文档、填充表单、添加图形和文字,甚至是执行复杂的文档修改。该库的主要特点包括:多平台支持。

weixin_42602368的博客 1363

PDF套打模板制作全流程指南与实战

PDF套打技术是指在已有固定格式的PDF文档(如发票、合同、报表等)中,通过程序动态填充业务数据并实现批量打印的技术。该技术广泛应用于金融、税务、物流等领域,是企业实现无纸化办公与自动化流程的重要支撑。与传统打印方式相比,PDF套打无需人工介入排版,能确保输出格式一致性,显著提升打印效率与数据准确性。它通常依赖于对PDF结构的深度解析与内容定位技术,结合编程语言(如Java)和PDF处理库(如iText、PDFBox)来实现高效开发与部署。

weixin_36204513的博客 1167

JAVA使用itextPdf将数据填入PDF模版文件的方式打印PDF文件

对于前端来讲,再重新排版布局,可就太折磨人了,而且像这种需求,我们还会经常接到,所以就考虑,有没有一种方式,在已经有打印模版的情况下,如何能快速地实现这个需求,经过查找,发现使用itexPdf可以往PDF模版中放入数据,word文件可以很轻易地转换为pdf文件,所以经过一番探索,自己写了一个PDF打印工具类。能把大部分的横线 和选择项勾选出来,上图点击左侧的管理表单控件,能把识别到的表单项识别出来。这里把它的名称改一改,这里可以改字体大小,字体颜色,控件的位置,是否换行等,可以自己摸索。

东南_bit的博客 2334

第七章-分布式搜索引擎-ES:全文查询、分词查询、精确查询、地理坐标查询、组合查询(bool、funtion_score)以及RestApi

111

weixin_36580930的博客 1632

iText 操作Pdf之模版02

原文:http://blog.youkuaiyun.com/w33365/article/details/7452212  1、 首先要安装Adobe Acrobat,装好之后用Acrobat从一个word,excel或者pdf中转换一个pdf模板,我做的模板很简单,直接写一个简单的word再生成一个pdf表单,之后编辑文本域的名字属性等,根据名字在Java中导入。下图是Acrobat10打开的,每

蓝天白云 3650

【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程

这章来学习串口数据流操作。仿照成品制作一个自己用Qt编写的串口助手。 1. 布局UI界面 创建QWidget工程,布局UI界面:拖入2个 Plain Text Edit,作为串口数据的接收显示和发送框。 拖入几个 Combo Box 、Label 和 Push Button,使用两个Widget进行布局。如下所示。 将接收区的 Plain Text Edit,属性勾选上 readOnly,使其运行时不会被人为的输入操作影响。 加入一些弹簧,使布局美观。(有必要可以加设置不能调整..

Mark_md的博客 9274

电流采样(分流器与霍尔传感器)

霍尔效应霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。简单原理如图1所示,半导体薄片两端通以控制电流I,垂直方向施加磁感应强度为B的匀强磁场,d为半导体材料的厚度,k为霍尔常数,它与半导体材质有关,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压,它们之间的关系为。霍尔元件。

weixin_48867130的博客 1万+

Spring Boot中集成IText模版导出PDF

Spring Boot这里是用的2.3.12这个版本,比较老,但是别的版本应该也差不多 紧接着放入IText依赖,我是随便放了一个稳定版本,别的版本应该也可以,这个真没有过多的研究,感觉应该差不多,需要使用中文字体的话,导入itext-asian,一般应该是都需要的。 2. 准备字体 字体的话是比较方便的,如果是windows电脑的话,自己电脑里面就有,直接去里面就有自己电脑上的字体,一般采用的宋体,这个就看自己的需要了,不过操作的时候可要小心了,别直接裁剪出去了 找到自己需要使用的字体,随后复制到自己项

w15635748705的博客 1093

从零搭建Synopsys EDA环境:Ubuntu系统下的完整安装与避坑指南

本文详细介绍了在Ubuntu系统下从零搭建Synopsys EDA环境的完整流程,包括系统配置、安装文件准备、核心工具安装、License配置及常见问题排查。特别针对数字IC设计场景,提供了VCS、Verdi、Design Compiler等EDA Tools的安装避坑指南和性能优化建议,帮助开发者高效搭建稳定的开发环境。

weixin_33738982的博客 491

java pdf模版的遍历_java使用itext操作填充pdf模板

一、先创建pdf模板1.先用word做出界面image.png2.再转换成pdf格式image.pngimage.png3.用Adobe Acrobat 打开你刚刚用word转换成的pdfimage.png会出现如下界面image.png下一步image.png点击浏览,选择刚才你转换好的pdfimage.png下一步4.打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框,...

weixin_34409887的博客 1211

避坑指南:Spring3集成OpenAPI时泛型响应失效的3种解决方案

本文深入探讨了Spring3集成OpenAPI时泛型响应失效的问题,提供了三种实用解决方案:移除@Schema注解、使用@ArraySchema包装泛型以及自定义Schema处理器。针对不同项目规模,详细分析了各方案的适用场景、优缺点及性能影响,帮助开发者高效生成准确的接口文档,提升前后端协作效率。

weixin_30839881的博客 100

SIwave仿真手册——电源完整性仿真之PDN阻抗的提取(四)

(想不到我这个弱鸡的博主有一天也有被催更的时候,看到后台被催的消息,我慌了,赶紧写一篇把。) 文章目录3.1 PDN阻抗的提取3.1.1手动完成PDN阻抗的提取1、创建pin group2、创建端口3、数据文件的清理和检查(参考1.3.4&1.3.5)4、添加电容模型(参考2.2.1)(==这一步很重要==)5、开始仿真6、查看仿真结果3.1.2利用向导工具完成PDN阻抗的提取1、点击图标![在这里插入图片描述](https://img-blog.csdnimg.cn/36d974339ea5449

luohuo9844的博客 1万+

用java的itext实现list数据存入pdf文件

第一种:不能分页 public class CreatePdf { public static void main(String[] args) throws Exception{ List<ExportBean> beanList = new ArrayList<>(); ExportBean bean = new Export...

weixin_43231872的博客 2959

ESP32设备驱动-直流电机与L298N电机驱动器

在本文中,我们将介绍如何使用ESP32通过L298N电机驱动器驱动直流电机。

视觉与物联智能 3593

java中利用iText实现导入数据到pdf模板中

<br /><br />1,引入jar包<br />E:/down/java 文档相关操作/iText/iText-5.0.6.jar<br />E:/down/java 文档相关操作/iText/iTextAsian.jar<br /><br />2, 利用Excel模板生成pdf文件,Excel单元格格式最好设置成文本,否则pdf填充值时可能中文无法显示<br /> <br />3, 用Acrobat编辑pdf文件,添加新的域,为域设置属性:字体、大小、页面位置...<br />   * 注: 如果有个

NOHI 6881

LLC谐振变换器软启动,不只是“慢启动”,还是“智能启动”

LLC谐振变换器的软启动,不只是“慢慢来”,而是要在控制时序、限流、响应速度之间精妙权衡。而数字控制,特别是用查表法或混合信号法,为实现真正的“最佳轨迹”提供了可能。✨小Tips:如果你的系统成本敏感,选择查表法准没错;如果你的设计目标是超高速响应,那就上混合信号的高配方案!

weixin_43199439的博客 691

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java IText使用PDF模板 生成 输出PDF

这是本人学习ITEXT的一些小实践,希望可以帮到大家。这也是我第一次写这种类型博客,如有不好之处欢迎指出!!下面我们开始吧! 本文所要用到的工具或jar主要有: Acrobat 8 这个主要用来制作PDF模板、eclipse这个看你喜欢咯(你用其他也行) 、 itext.

binyao02123202的专栏 2万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: json转换对象中带XMLGregorianCalendar属性的方法
下一篇: easyui的treegrid数据转换代码
IT七仔
博客等级 码龄24年 6粉丝 7原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值