pdf在线浏览网站源码分享(pdf在线网站会泄露文件吗)

今天给各位分享pdf在线浏览网站源码分享的知识,其中也会对pdf在线网站会泄露文件吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

1背景

文章主要通过Java纯后端实现生成PDF源码方案,可以实现PDF表格、图片、统计图及模板!

这里需要用到的技术:JDK8、SpringBoot、POM、lombok、hutool等

2项目准备

搭建一个SpringBoot项目,这个很简单就不举例了。然后引入pom依赖如下:

\t\t<dependency>\n\t\t\t<groupId>com.itextpdf</groupId>\n\t\t\t<artifactId>itextpdf</artifactId>\n\t\t\t<version>5.5.9</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>com.itextpdf</groupId>\n\t\t\t<artifactId>itext-asian</artifactId>\n\t\t\t<version>5.2.0</version>\n\t\t</dependency>\n\t<dependency>\n\t\t\t<groupId>org.projectlombok</groupId>\n\t\t\t<artifactId>lombok</artifactId>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>cn.hutool</groupId>\n\t\t\t<artifactId>hutool-core</artifactId>\n\t\t\t<version>5.4.3</version>\n\t\t\t<scope>compile</scope>\n\t\t</dependency>

3JAVA根据已有的pdf模板,填充数据生成pdf(图片及动态生成表格)

实体类

对账实体

packagecom.test.merservice.controller.miniapp;\n\nimportlombok.Data;\nimportlombok.experimental.Accessors;\n\nimportjava.math.BigDecimal;\n\n/**\n*对账\n*/\n@Data\n@Accessors(chain=true)\npublicclassReconciliation{\nprivateStringjg;\nprivateIntegerydz;\nprivateIntegerwdz;\nprivateBigDecimaldzl;\n}

逾期表格实体

packagecom.test.merservice.controller.miniapp;\n\nimportlombok.Data;\nimportlombok.experimental.Accessors;\n\nimportjava.io.Serializable;\n\n/**\n*逾期表格\n*/\n@Data\n@Accessors(chain=true)\npublicclassBeOverdueTableimplementsSerializable{\nprivateStringjg;\nprivateIntegeryqs;\n}

填充数据到已有模板,并PDF代码

packagecom.test.merservice.controller.miniapp;\n\nimportcn.hutool.core.date.DateUtil;\nimportcom.example.demo.domain.DuizhangDomain;\nimportcom.example.demo.domain.YqTable;\nimportcom.example.demo.pdf.phantom.App;\nimportcom.example.demo.pdf.phantom.PageEvent;\nimportcom.itextpdf.text.*;\nimportcom.itextpdf.text.pdf.*;\nimportfreemarker.template.TemplateException;\nimportorg.springframework.core.io.ClassPathResource;\n\nimportjavax.servlet.http.HttpServletResponse;\nimportjava.io.ByteArrayOutputStream;\nimportjava.io.IOException;\nimportjava.io.InputStream;\nimportjava.io.OutputStream;\nimportjava.math.BigDecimal;\nimportjava.util.ArrayList;\nimportjava.util.List;\n\n/**\n*动态生成PDF\n*/\npublicclassCreatePdfEchrtsAndTable{\n\nprivatefinalstaticStringTITLE=&34;;\npublicvoidcreatePdfFile(HttpServletResponseresponse)throwsIOException,DocumentException,TemplateException{\n//设置请求返回类型\nresponse.setHeader(&34;,&34;);\nOutputStreamoutputStream=response.getOutputStream();\n//模板路径,放到项目里用这个ClassPathResource\nClassPathResourceclassPathResource=newClassPathResource(&34;);\nInputStreaminputStream=classPathResource.getInputStream();\n\nPdfReaderreader=newPdfReader(inputStream);\nByteArrayOutputStreambos=newByteArrayOutputStream();\nPdfStamperps=newPdfStamper(reader,bos);\n\n//设置字体\nfinalBaseFontfont=BaseFont.createFont(&34;,&34;,BaseFont.NOT_EMBEDDED);\nArrayList<BaseFont>fontList=newArrayList<>();\nfontList.add(font);\n\n//提取表单,这个是模板画好的文本框\nAcroFieldss=getAcroFields(ps,font,fontList);\n\n//添加图片\nPdfContentBytecb=getPdfContentByte(ps,s);\n\n//获取统计图\nextracted(s,cb);\n\n//按机构统计图\nbyte[]echarts=getBytes(font,s,cb);\n\n//按场合统计图\nextracted(font,s,cb,echarts);\n\n//按等级统计图\nextracted(ps,font,s,cb,echarts);\n\n//*******************填充编辑好后的pdf**************\nreader=newPdfReader(bos.toByteArray());\nRectanglepageSize=reader.getPageSize(1);\nDocumentdocument=newDocument(pageSize);\nPdfWriterwriter=PdfWriter.getInstance(document,outputStream);\nwriter.setPageEvent(newPageEvent());\n//打开文档\ndocument.open();\nPdfContentBytecbUnder=writer.getDirectContentUnder();\nPdfImportedPagepageTemplate=writer.getImportedPage(reader,1);\ncbUnder.addTemplate(pageTemplate,0,0);\n//重新开一页面(注意一下,这里必须要重新开一个页面,不如会导致内容重叠)\ndocument.newPage();\ncreateTable(writer,document);\n//document.newPage();\ncreateTableYq(writer,document);\ndocument.close();\noutputStream.close();\n}\n\nprivatevoidextracted(PdfStamperps,BaseFontfont,AcroFieldss,PdfContentBytecb,byte[]echarts){\nRectangleadj=s.getFieldPositions(&34;).get(0).position;\nImageadjImage=Image.getInstance(echarts);\n//设根据域大小设置缩放图片\nadjImage.scaleToFit(adj.getWidth(),400);\n//设置居中\nadjImage.setAlignment(Image.MIDDLE);\n\n//绝对定位\nadjImage.setAbsolutePosition(adj.getLeft(),adj.getBottom());\ncb.addImage(adjImage);\n//按场景排名\nfor(inti=1;i<=3;i++){\ns.setFieldProperty(&34;+i,&34;,font,null);\ns.setField(&34;+i,&34;+i);\n}\nps.setFormFlattening(true);\nps.close();\n}\n\nprivatevoidextracted(BaseFontfont,AcroFieldss,PdfContentBytecb,byte[]echarts){\nRectangleacj=s.getFieldPositions(&34;).get(0).position;\nImageacjImage=Image.getInstance(echarts);\n//设根据域大小设置缩放图片\nacjImage.scaleToFit(acj.getWidth(),400);\n//设置居中\nacjImage.setAlignment(Image.MIDDLE);\n//绝对定位\nacjImage.setAbsolutePosition(acj.getLeft(),acj.getBottom());\ncb.addImage(acjImage);\n//按场景排名\nfor(inti=1;i<=3;i++){\ns.setFieldProperty(&34;+i,&34;,font,null);\ns.setField(&34;+i,&34;+i);\n}\n}\n\nprivatebyte[]getBytes(BaseFontfont,AcroFieldss,PdfContentBytecb){\n//这个是生成echarts的类,如果需要生成echarts可以去看我的另一个文章,上面前言已经提到了\nAppapp1=newApp();\nbyte[]echarts1=app1.createEcharts(&34;);\nImageajgImage=Image.getInstance(echarts1);\nRectangleajg=s.getFieldPositions(&34;).get(0).position;\n//根据域大小设置缩放图片\najgImage.scaleToFit(ajg.getWidth(),400);\n//设置居中\najgImage.setAlignment(Image.MIDDLE);\n//绝对定位\najgImage.setAbsolutePosition(ajg.getLeft(),ajg.getBottom());\ncb.addImage(ajgImage);\n//按机构排名,这个是在图片的基础上还要添加数据,这个模板可以画好\nfor(inti=1;i<=3;i++){\ns.setFieldProperty(&34;+i,&34;,font,null);\ns.setField(&34;+i,&34;+i);\n}\nAppapp=newApp();\nbyte[]echarts=app.createEcharts(&34;);\n//按业务\nRectangleayw=s.getFieldPositions(&34;).get(0).position;\nImageaywImage=Image.getInstance(echarts);\n//设根据域大小设置缩放图片\naywImage.scaleToFit(ayw.getWidth(),400);\n//设置居中\naywImage.setAlignment(Image.MIDDLE);\n//绝对定位\naywImage.setAbsolutePosition(ayw.getLeft(),ayw.getBottom());\ncb.addImage(aywImage);\n//按业务排名\nfor(inti=1;i<=3;i++){\ns.setFieldProperty(&34;+i,&34;,font,null);\ns.setField(&34;+i,&34;+i);\n}\nreturnecharts;\n}\n\nprivatevoidextracted(AcroFieldss,PdfContentBytecb){\n//获取域\nRectanglerlt=s.getFieldPositions(&34;).get(0).position;\n//热力图\nImagerltImage=Image.getInstance(&34;);\n//根据域大小设置缩放图片\nrltImage.scaleToFit(rlt.getWidth()+100,rlt.getHeight());\n//设置居中\nrltImage.setAlignment(Image.MIDDLE);\n//绝对定位\nrltImage.setAbsolutePosition(rlt.getLeft(),rlt.getBottom());\n//图片旋转,这个可以将图片进行一个旋转,看自己需求\n//rltImage.setRotationDegrees(90);\ncb.addImage(rltImage);\n}\n\nprivatePdfContentBytegetPdfContentByte(PdfStamperps,AcroFieldss){\nPdfContentBytecb=ps.getOverContent(1);\n//添加logo\nRectanglelogo=s.getFieldPositions(&34;).get(0).position;\nImagelogoImage=Image.getInstance(&34;);\n//根据域的大小缩放图片,我这里宽度在原有的域基础上加了100,你们可以自己调节\nlogoImage.scaleToFit(logo.getWidth()+100,logo.getHeight());\nlogoImage.setAlignment(Image.MIDDLE);\nlogoImage.setAbsolutePosition(logo.getLeft(),logo.getBottom());\ncb.addImage(logoImage);\nreturncb;\n}\n\nprivateAcroFieldsgetAcroFields(PdfStamperps,BaseFontfont,ArrayList<BaseFont>fontList){\nAcroFieldss=ps.getAcroFields();\ns.setSubstitutionFonts(fontList);\n\ns.setFieldProperty(&34;,&34;,font,null);\ns.setFieldProperty(&34;,&34;,font,null);\ns.setFieldProperty(&34;,&34;,font,null);\ns.setFieldProperty(&34;,&34;,font,null);\ns.setFieldProperty(&34;,&34;,font,null);\ns.setField(&34;,&34;);\ns.setField(&34;,&34;);\ns.setField(&34;,&34;);\ns.setField(&34;,DateUtil.now());\ns.setField(&34;,TITLE);\nreturns;\n}\n\n//为一个表格添加内容\npublicPdfPCellcreateSetCell(Stringvalue,Fontfont){\nPdfPCellcell=newPdfPCell();\ncell.setPhrase(newPhrase(value,font));\ncell.setVerticalAlignment(Element.ALIGN_MIDDLE);\ncell.setHorizontalAlignment(Element.ALIGN_CENTER);\nreturncell;\n}\n\n\n//添加表格\npublicvoidcreateTable(PdfWriterwriter,Documentdocument)throwsDocumentException,IOException{\n\nPdfPTabletable=newPdfPTable(newfloat[]{30,80,50,50,50});\ntable.setTotalWidth(520);\ntable.setPaddingTop(500);\ntable.setLockedWidth(true);\ntable.setHorizontalAlignment(Element.ALIGN_CENTER);//居中\ntable.writeSelectedRows(0,-1,500,800,writer.getDirectContentUnder());\n//每页都显示表头,输入几就是第几行的表头固定\ntable.setHeaderRows(2);\ntable.setHeaderRows(3);\n\n//定义数据的字体\nBaseFontbaseFont=BaseFont.createFont(&34;,&34;,BaseFont.NOT_EMBEDDED);\nFonttextFont=newFont(baseFont,10,Font.NORMAL);\nPdfPCellcell=newPdfPCell(newParagraph(&34;,textFont));\n\ncell.setHorizontalAlignment(Element.ALIGN_LEFT);\n\ncell.setVerticalAlignment(Element.ALIGN_BOTTOM);\n\ncell.setBorder(Rectangle.NO_BORDER);\n\ncell.setColspan(5);\n\ntable.addCell(cell);\n\n//表头信息\nPdfPCellheandCell=newPdfPCell();\nheandCell.setRowspan(1);\nheandCell.setColspan(5);\nheandCell.setFixedHeight(60);\nheandCell.setVerticalAlignment(Element.ALIGN_MIDDLE);\nheandCell.setHorizontalAlignment(Element.ALIGN_CENTER);\nheandCell.setPhrase(newPhrase(TITLE+&34;,textFont));\ntable.addCell(heandCell);\n\n//表字段\nStringtitle[]={&34;,&34;,&34;,&34;,&34;};\nfor(inti=0;i<title.length;i++){\nPdfPCellheardCell=newPdfPCell();\nheardCell.setVerticalAlignment(Element.ALIGN_MIDDLE);\nheardCell.setHorizontalAlignment(Element.ALIGN_CENTER);\nheardCell.setPhrase(newPhrase(title[i],textFont));\nheardCell.setMinimumHeight(20);\ntable.addCell(heardCell);\n}\n\n//列表数据\n\nList<Reconciliation>reconciliation=newArrayList<>();\nfor(inti=1;i<=1000;i++){\nReconciliationreconciliation=newReconciliation();\nreconciliation.setJg(&34;+i).setYdz(i).setWdz(i).setDzl(newBigDecimal(i));\nreconciliation.add(reconciliation);\n}\n\nfor(inti=0;i<reconciliation.size();i++){\nPdfPCellsetCell1=createSetCell((i+1)+&34;,textFont);\nPdfPCellsetCell2=createSetCell(reconciliation.get(i).getJg(),textFont);\nPdfPCellsetCell3=createSetCell(reconciliation.get(i).getYdz().toString(),textFont);\nPdfPCellsetCell4=createSetCell(reconciliation.get(i).getWdz().toString(),textFont);\nPdfPCellsetCell5=createSetCell(reconciliation.get(i).getDzl()+&34;,textFont);\ntable.addCell(setCell1);\ntable.addCell(setCell2);\ntable.addCell(setCell3);\ntable.addCell(setCell4);\ntable.addCell(setCell5);\n}\ndocument.add(table);\n}\n\n\npublicvoidcreateTableYq(PdfWriterwriter,Documentdocument)throwsDocumentException,IOException{\n\nPdfPTabletable=newPdfPTable(newfloat[]{80,50});\ntable.setTotalWidth(520);\ntable.setPaddingTop(500);\ntable.setLockedWidth(true);\ntable.setHorizontalAlignment(Element.ALIGN_CENTER);//居中\ntable.writeSelectedRows(0,-1,500,800,writer.getDirectContentUnder());\n//每页都显示表头,输入几就是第几行的表头固定\ntable.setHeaderRows(2);\ntable.setHeaderRows(3);\n\n//定义数据的字体\nBaseFontbaseFont=BaseFont.createFont(&34;,&34;,BaseFont.NOT_EMBEDDED);\nFonttextFont=newFont(baseFont,10,Font.NORMAL);\n\n//这个是为了区分两个表格加的一个间隔,可以去掉\nPdfPCellcell=newPdfPCell(newParagraph(&34;,textFont));\ncell.setHorizontalAlignment(Element.ALIGN_LEFT);\ncell.setVerticalAlignment(Element.ALIGN_BOTTOM);\ncell.setBorder(Rectangle.NO_BORDER);\ncell.setColspan(2);\ntable.addCell(cell);\n\n//表头信息\nPdfPCellheandCell=newPdfPCell();\nheandCell.setRowspan(1);\nheandCell.setColspan(2);\nheandCell.setFixedHeight(60);\nheandCell.setVerticalAlignment(Element.ALIGN_MIDDLE);\nheandCell.setHorizontalAlignment(Element.ALIGN_CENTER);\nheandCell.setPhrase(newPhrase(TITLE+&34;,textFont));\ntable.addCell(heandCell);\n\n//表字段\nStringtitle[]={&34;,&34;};\nfor(inti=0;i<title.length;i++){\nPdfPCellheardCell=newPdfPCell();\nheardCell.setVerticalAlignment(Element.ALIGN_MIDDLE);\nheardCell.setHorizontalAlignment(Element.ALIGN_CENTER);\nheardCell.setPhrase(newPhrase(title[i],textFont));\nheardCell.setMinimumHeight(20);\ntable.addCell(heardCell);\n}\n\n//列表数据\n\nList<YqTable>yqTables=newArrayList<>();\nfor(inti=1;i<=1000;i++){\nBeOverdueTableyq=newBeOverdueTable();\nyq.setJg(&34;+i).setYqs(i);\nyqTables.add(yq);\n}\n\nfor(inti=0;i<yqTables.size();i++){\nPdfPCellsetCell2=createSetCell(yqTables.get(i).getJg(),textFont);\nPdfPCellsetCell3=createSetCell(yqTables.get(i).getYqs().toString(),textFont);\ntable.addCell(setCell2);\ntable.addCell(setCell3);\n}\ndocument.add(table);\n}\n}

注意:Document.document.newPage();每次都新打开一页,这样可以避免内容重叠。

4JAVA根据已有模板,填充数据生成pdf(水印动态表格)

实体同上不变页眉、页脚和水印工具类

packagecom.test.merservice.controller.miniapp;\n\nimportcom.itextpdf.text.*;\nimportcom.itextpdf.text.pdf.*;\n\nimportjava.io.IOException;\n\n/**\n*页眉、页脚、水印\n*/\npublicclassPdfPageEventextendsPdfPageEventHelper{\n/**\n*页眉\n*/\n//publicStringheader=&34;;\n\n/**\n*文档字体大小,页脚页眉最好和文本大小一致\n*/\npublicintpresentFontSize=10;\n\n/**\n*文档页面大小,最好前面传入,否则默认为A4纸张\n*/\npublicRectanglepageSize=PageSize.A4;\n\n//模板\npublicPdfTemplatetotal;\n\n//基础字体对象\npublicBaseFontbf=null;\n\n//利用基础字体生成的字体对象,一般用于生成中文文字\npublicFontfontDetail=null;\n\n\n/**\n*无参构造方法.\n*/\npublicPdfPageEvent(){\n\n}\n\n/**\n*构造方法.\n*@parampresentFontSize\n*数据体字体大小\n*@parampageSize\n*页面文档大小,A4,A5,A6横转翻转等Rectangle对象\n*/\n//publicPDFBuilder(StringyeMei,intpresentFontSize,RectanglepageSize){\n//this.header=yeMei;\n//this.presentFontSize=presentFontSize;\n//this.pageSize=pageSize;\n//}\npublicPdfPageEvent(intpresentFontSize,RectanglepageSize){\nthis.presentFontSize=presentFontSize;\nthis.pageSize=pageSize;\n}\n\n//publicvoidsetHeader(Stringheader){\n//this.header=header;\n//}\n\npublicvoidsetPresentFontSize(intpresentFontSize){\nthis.presentFontSize=presentFontSize;\n}\n\n\n/**\n*\n*TODO文档打开时创建模板\n*\n*@seecom.itextpdf.text.pdf.PdfPageEventHelper39;第几页共&onEndPage(com.itextpdf.text.pdf.PdfWriter,\n*com.itextpdf.text.Document)\n*/\npublicvoidonEndPage(PdfWriterwriter,Documentdocument){\nthis.addPage(writer,document);\n//加水印\nthis.addWatermark(writer);\n}\n\n//加分页\npublicvoidaddPage(PdfWriterwriter,Documentdocument){\n//设置分页页眉页脚字体\ntry{\nif(bf==null){\nbf=BaseFont.createFont(&34;,&34;,false);\n}\nif(fontDetail==null){\nfontDetail=newFont(bf,presentFontSize,Font.NORMAL);//数据体字体\n}\n}catch(DocumentExceptione){\ne.printStackTrace();\n}catch(IOExceptione){\ne.printStackTrace();\n}\n\n//1.写入页眉\n//ColumnText.showTextAligned(writer.getDirectContent(),\n//Element.ALIGN_LEFT,newPhrase(header,fontDetail),\n//document.left(),document.top()+20,0);\n//页眉添加图片\n//Stringpath=ResourceUtils.getFile(&34;).getPath();\n//Imageimg=Image.getInstance(path+&34;);\n//img.setAlignment(Image.MIDDLE);\n//img.setWidthPercentage(80);\n//img.scaleToFit(50,40);\n//img.setAbsolutePosition(document.left(),document.top());\n//writer.getDirectContent().addImage(img);\n//页眉加下划线\n//PdfPTabletableHeader=newPdfPTable(1);\n//tableHeader.setTotalWidth(PageSize.A4.getWidth()-60);\n//PdfPCellpCell=newPdfPCell();\n//pCell.setBorderWidthBottom(0.3f);\n//tableHeader.addCell(pCell);\n//tableHeader.writeSelectedRows(0,-1,30,805,writer.getDirectContent());\n\n//2.写入前半部分的第X页/共\nintpageS=writer.getPageNumber();\nStringfoot1=&34;+pageS+&34;;\n//Stringfoot1=pageS+&34;;\nPhrasefooter=newPhrase(foot1,fontDetail);\n\n//3.计算前半部分的foot1的长度,后面好定位最后一部分的&39;这俩字的x轴坐标,字体长度也要计算进去=len\nfloatlen=bf.getWidthPoint(foot1,presentFontSize);\n\n//4.拿到当前的PdfContentByte\nPdfContentBytecb=writer.getDirectContent();\n\n//5.写入页脚1,x轴就是(右margin+左margin+right()-left()-len)/2.0F\n//再给偏移20F适合人类视觉感受,否则肉眼看上去就太偏左了\n//,y轴就是底边界-20,否则就贴边重叠到数据体里了就不是页脚了;注意Y轴是从下往上累加的,最上方的Top值是大于Bottom好几百开外的。\nColumnText\n.showTextAligned(\ncb,\nElement.ALIGN_CENTER,\nfooter,\n(document.rightMargin()+document.right()\n+document.leftMargin()-document.left()-len)/2.0F,\ndocument.bottom()-20,0);\n\n//6.写入页脚2的模板(就是页脚的Y页这俩字)添加到文档中,计算模板的和Y轴,X=(右边界-左边界-前半部分的len值)/2.0F+\n//len,y轴和之前的保持一致,底边界-20\ncb.addTemplate(total,(document.rightMargin()+document.right()\n+document.leftMargin()-document.left())/2.0F,\ndocument.bottom()-20);//调节模版显示的位置\n\n}\n\n//加水印\npublicvoidaddWatermark(PdfWriterwriter){\n//水印图片\n//Imageimage;\n//try{\n//image=Image.getInstance(&34;);\n//PdfContentBytecontent=writer.getDirectContentUnder();\n//content.beginText();\n////开始写入水印\n//for(intk=0;k<5;k++){\n//for(intj=0;j<4;j++){\n//image.setAbsolutePosition(150*j,170*k);\n//content.addImage(image);\n//}\n//}\n//content.endText();\n//}catch(IOException|DocumentExceptione){\n////TODOAuto-generatedcatchblock\n//e.printStackTrace();\n//}\nBaseFontfont=null;\ntry{\nfont=BaseFont.createFont(&34;,&34;,BaseFont.NOT_EMBEDDED);\n}catch(DocumentExceptione){\ne.printStackTrace();\n}catch(IOExceptione){\ne.printStackTrace();\n}\nPdfGStategs=newPdfGState();\n//添加透明度\ngs.setFillOpacity(0.4f);\nPdfContentBytecontent=writer.getDirectContentUnder();\ncontent.beginText();\n//水印颜色\ncontent.setColorFill(BaseColor.DARK_GRAY);\ncontent.setGState(gs);\n//水印字体样式和大小\ncontent.setFontAndSize(font,35);\n//插入水印循环每页插入的条数\nfor(intj=0;j<3;j++){\ncontent.showTextAligned(Element.ALIGN_CENTER,&34;,300,200*(j+1),30);\n}\ncontent.endText();\n}\n\n/**\n*\n*TODO关闭文档时,替换模板,完成整个页眉页脚组件\n*\n*@seecom.itextpdf.text.pdf.PdfPageEventHelper34;&34;页&34;Content-Disposition&34;attachment;filename=测试.pdf&34;templates/test3.pdf&34;STSong-Light&34;UniGB-UCS2-H&34;type&34;textfont&34;createTime&34;textfont&34;title&34;textfont&34;type&34;日报&34;createTime&34;title&34;这是title,模板画的位置框&34;STSong-Light&34;UniGB-UCS2-H&34;对账情况表&34;序号&34;机构&34;已对账&34;未对账&34;对账率%&34;机构&34;&34;%&34;STSong-Light&34;UniGB-UCS2-H&34;逾期表&34;机构名称&34;逾期数&34;逾期机构&34;”,textFont));\n\ncell.setHorizontalAlignment(Element.ALIGN_LEFT);\n\ncell.setVerticalAlignment(Element.ALIGN_BOTTOM);\n\ncell.setBorder(Rectangle.NO_BORDER);\ncell.setFixedHeight(height);\n\ncell.setColspan(1);\n\ntable.addCell(cell);\ndocument.add(table);\n}\n}

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平