java生成pdf表格java生成pdf模板动态表格java pdf表格




java生成pdf表格java生成pdf模板动态表格java pdf表格

2022-07-20 21:28:50 网络知识 官方管理员

制作模板

首先需要安装AdobeAcrobatDC来制作模板

java生成pdf表格(java生成pdf模板动态表格)(1)

打开dc工具——》准备表单,然后打开你需要制作的pdf源文件


java生成pdf表格(java生成pdf模板动态表格)(2)

文本域拖到你需要代码替换的位置


java生成pdf表格(java生成pdf模板动态表格)(3)

你可以双击文本域修改当前文本域的key值,便于代码中替换


java生成pdf表格(java生成pdf模板动态表格)(4)

也可以修改文本域的字体大小以及颜色等,在外观这一栏下

java生成pdf表格(java生成pdf模板动态表格)(5)

设置好文本域之后保存,如果发现保存之后一直卡住,可以按如下操作,打开编辑——》首选项


java生成pdf表格(java生成pdf模板动态表格)(6)

点击一般,将红框内的在线存储取消掉即可


程序实现

<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.13</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>

java生成pdf表格(java生成pdf模板动态表格)(7)

依赖包

java生成pdf表格(java生成pdf模板动态表格)(8)

将制作好的模板文件放在resources目录下


/***根据模板生成pdf**@paramcontract*@return*/@SneakyThrowspublicvoidcreatePDF(ContractDatacontract,HttpServletResponseresponse){PdfReaderreader=null;AcroFieldss=null;PdfStamperps=null;ByteArrayOutputStreambos=null;try{ClassPathResourceresource=newClassPathResource("contractTemplate.pdf");InputStreamis=resource.getInputStream();reader=newPdfReader(is);bos=newByteArrayOutputStream();ps=newPdfStamper(reader,bos);s=ps.getAcroFields();Classclazz=ContractData.class;Field[]fields=clazz.getDeclaredFields();try{for(Fieldf:fields){f.setAccessible(true);if(f.get(contract)!=null){s.setField(f.getName(),f.get(contract).toString());}}}catch(IllegalAccessExceptione){thrownewCommonException();}//如果为false那么生成的PDF文件还能编辑,一定要设为trueps.setFormFlattening(true);ps.close();response.reset();response.setContentType("application/pdf");ServletOutputStreamfos=response.getOutputStream();fos.write(bos.toByteArray());fos.flush();fos.close();}catch(IOException|DocumentExceptione){e.printStackTrace();}finally{try{bos.close();reader.close();}catch(IOExceptione){e.printStackTrace();}}}

java生成pdf表格(java生成pdf模板动态表格)(9)

核心代码

@DataclassContractData{privateStringcontractNo;privateStringpartyAName;privateStringpartyBName;}

java生成pdf表格(java生成pdf模板动态表格)(10)

实体类

这样就可以了

下面是生成的最终pdf文件

java生成pdf表格(java生成pdf模板动态表格)(11)

最后生成的效果


大功告成~

发表评论:

最近发表
网站分类
标签列表