/*** PDF工具*/

public classPdfUtils {/*** 生成

*@paramiouData 借据数据

*@paramplanList 还款计划List

*@paramaccountsList 收本金账户

*@paraminterstAccountsList 收息账户

*@paramorderCode

*@return

*/

public static String turnToPdf(LoanIouData iouData,List planList, List accountsList, ListinterstAccountsList, String orderCode){

String basePath= PropertiesUtil.getValue("pdf.path","/application.properties");

File file= newFile(basePath);if(!file.exists()){

file.mkdirs();

}

String path= "";try{//创建文件

Document document = newDocument();//建立一个书写器

path = basePath+orderCode+"_还款计划表.pdf";

PdfWriter writer= PdfWriter.getInstance(document, newFileOutputStream(path));//打开文件

document.open();//中文字体,解决中文不能显示问题

BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

Font font= new Font(bfChinese);//正常字体

Font fontBold = new Font(bfChinese, 12, Font.BOLD);//正常加粗字体

Font fontBig = new Font(bfChinese, 20);//大字体

Font fontBigBold = new Font(bfChinese, 20, Font.BOLD);//加粗大字体//添加主题

Paragraph theme = new Paragraph("还款计划表", fontBigBold);

theme.setAlignment(Element.ALIGN_CENTER);

document.add(theme);//借款信息

Paragraph peopleInfo = new Paragraph("借款人:"+iouData.getBorrower()+" "+"借款金额:"+iouData.getLoanAmount()+"万元", font);

peopleInfo.setAlignment(Element.ALIGN_CENTER);

document.add(peopleInfo);//加入空行//Paragraph blankRow = new Paragraph(18f, " ");//document.add(blankRow);//TODO Table1 还款计划 : 3列的表.-------------------------------------

PdfPTable table1 = new PdfPTable(3);

table1.setWidthPercentage(90); //宽度100%填充

table1.setSpacingBefore(20f); //前间距

table1.setSpacingAfter(20f); //后间距

List listRow =table1.getRows();//设置列宽

float[] columnWidths ={1f, 2f, 3f};

table1.setWidths(columnWidths);//行1

PdfPCell cells0[] = new PdfPCell[3];

PdfPRow row0= newPdfPRow(cells0);//单元格

cells0[0] = new PdfPCell(new Paragraph("期数", fontBold));//单元格内容

cells0[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells0[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells0[0].setFixedHeight(25f);

cells0[0].setBackgroundColor(BaseColor.LIGHT_GRAY);

cells0[1] = new PdfPCell(new Paragraph("日期", fontBold));

cells0[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells0[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells0[1].setBackgroundColor(BaseColor.LIGHT_GRAY);

cells0[2] = new PdfPCell(new Paragraph("金额(元)", fontBold));

cells0[2].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells0[2].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells0[2].setBackgroundColor(BaseColor.LIGHT_GRAY);

listRow.add(row0);//插入还款内容

for(LoanRepaymentPlan plan : planList) {

PdfPCell cells[]= new PdfPCell[3];

PdfPRow row= newPdfPRow(cells);

cells[0] = new PdfPCell(newParagraph(String.valueOf(plan.getNum())));

cells[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells[0].setFixedHeight(25f);

cells[1] = new PdfPCell(new Paragraph(String.valueOf(DateFormatUtils.format(plan.getRepaymentTime(), "yyyy/MM/dd"))));

cells[1].setFixedHeight(25f);

cells[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells[2] = new PdfPCell(newParagraph(String.valueOf(plan.getReturnAmount())));

cells[2].setFixedHeight(25f);

cells[2].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells[2].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中//把第单元格添加到集合(行)

listRow.add(row);

}//TODO Table2 账户列表 : 2列的表.------------------------------------------------------------------------

PdfPTable table2= new PdfPTable(2);

table2.setWidthPercentage(90); //宽度100%填充

table2.setSpacingBefore(20f); //前间距

table2.setSpacingAfter(20f); //后间距

List listRow2 =table2.getRows();//设置列宽

float[] columnWidths2 ={1f, 2f};

table2.setWidths(columnWidths2);//TODO --第一部分

PdfPCell cells2[] = new PdfPCell[2];

PdfPRow row2= newPdfPRow(cells2);

cells2[0] = new PdfPCell(new Paragraph("还息账号信息", fontBold));//单元格内容

cells2[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells2[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells2[0].setFixedHeight(25f);

cells2[0].setBackgroundColor(BaseColor.LIGHT_GRAY);

cells2[0].setColspan(2);//合并单元格

listRow2.add(row2);for(TransferAccount interstAccount : interstAccountsList){

PdfPCell cells3[]= new PdfPCell[2];

PdfPRow row3= newPdfPRow(cells3);

cells3[0] = new PdfPCell(new Paragraph("还息账号", font));//单元格内容

cells3[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells3[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells3[0].setFixedHeight(25f);

cells3[1] = new PdfPCell(new Paragraph(interstAccount.getCertPan(), font));//单元格内容

cells3[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells3[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells3[1].setFixedHeight(25f);

listRow2.add(row3);

PdfPCell cells4[]= new PdfPCell[2];

PdfPRow row4= newPdfPRow(cells4);

cells4[0] = new PdfPCell(new Paragraph("还息户名", font));//单元格内容

cells4[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells4[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells4[0].setFixedHeight(25f);

cells4[1] = new PdfPCell(new Paragraph(interstAccount.getName(), font));//单元格内容

cells4[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells4[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells4[1].setFixedHeight(25f);

listRow2.add(row4);

PdfPCell cells5[]= new PdfPCell[2];

PdfPRow row5= newPdfPRow(cells5);

cells5[0] = new PdfPCell(new Paragraph("还息开户行", font));//单元格内容

cells5[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells5[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells5[0].setFixedHeight(25f);

cells5[1] = new PdfPCell(new Paragraph(interstAccount.getOpenBankName(), font));//单元格内容

cells5[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells5[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells5[1].setFixedHeight(25f);

listRow2.add(row5);

}//TODO --第2部分

PdfPCell cells6[] = new PdfPCell[2];

PdfPRow row6= newPdfPRow(cells6);

cells6[0] = new PdfPCell(new Paragraph("还本金账号信息", fontBold));//单元格内容

cells6[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells6[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells6[0].setFixedHeight(25f);

cells6[0].setBackgroundColor(BaseColor.LIGHT_GRAY);

cells6[0].setColspan(2);//合并单元格

listRow2.add(row6);for(TransferAccount account : accountsList){

PdfPCell cells7[]= new PdfPCell[2];

PdfPRow row7= newPdfPRow(cells7);

cells7[0] = new PdfPCell(new Paragraph("还本金账号", font));//单元格内容

cells7[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells7[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells7[0].setFixedHeight(25f);

cells7[1] = new PdfPCell(new Paragraph(account.getCertPan(), font));//单元格内容

cells7[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells7[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells7[1].setFixedHeight(25f);

listRow2.add(row7);

PdfPCell cells8[]= new PdfPCell[2];

PdfPRow row8= newPdfPRow(cells8);

cells8[0] = new PdfPCell(new Paragraph("还本金户名", font));//单元格内容

cells8[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells8[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells8[0].setFixedHeight(25f);

cells8[1] = new PdfPCell(new Paragraph(account.getName(), font));//单元格内容

cells8[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells8[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells8[1].setFixedHeight(25f);

listRow2.add(row8);

PdfPCell cells9[]= new PdfPCell[2];

PdfPRow row9= newPdfPRow(cells9);

cells9[0] = new PdfPCell(new Paragraph("还本金开户行", font));//单元格内容

cells9[0].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells9[0].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells9[0].setFixedHeight(25f);

cells9[1] = new PdfPCell(new Paragraph(account.getOpenBankName(), font));//单元格内容

cells9[1].setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cells9[1].setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

cells9[1].setFixedHeight(25f);

listRow2.add(row9);

}//把表格添加到文件中

document.add(table1);

document.add(table2);//关闭文档

document.close();//关闭书写器

writer.close();

}catch(Exception ex){

ex.printStackTrace();

}returnpath;

}

}

java pdf 工具_Java_iText_PDF—生成PDF工具相关推荐

  1. java根据pdf模版动态生成pdf

    java根据pdf模版动态生成pdf packagecom.utils;importjava.io.ByteArrayOutputStream;importjava.io.File;importjav ...

  2. java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件

    简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...

  3. django生成文件txt、pdf(在生成 PDF 文件之前,需要安装 ReportLab 库)

    from django.http import HttpResponse def download_file(request): # Text file #response = HttpRespons ...

  4. 利用itext工具编辑生成pdf

    1.先用word做出界面 2.把word文档转换成pdf输出 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf,选择"创建PDF表单" 4.选择刚刚生成的pdf ...

  5. java pdf模板填充生成pdf打印 (亲测有效)

    //先要制作好pdf模板(可以在word 里面画好,导出保存pdf文件), 下载Adobe Acrobat DC 工具 后打开 pdf 里面带格式的,然后 点击 准备表单按钮 你可以拖动 文本 和文本 ...

  6. java xsl转换pdf_Java 生成PDF文档-阿里云开发者社区

    最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持 iText,生成PDF文档,还支持将XM ...

  7. 自动生成PDF文件(Java通过PDF模板自动生成PDF)

    思路: 1.创建PDF模板(先创建对应的excel文件,创建好后另存为PDF文件)即可. 2.使用Adobe Acrobat DC工具打开PDF文件,设置自己想要替换的内容. 3.maven项目引入依 ...

  8. java itext根据模板生成pdf

    很久没有更新过了,稍微闲一点,顺势总结下N久之前用到的小技巧. 这里生成pdf主要使用itext.jar.如想生成一个pdf,其实很简单的啦!第一种:全部使用代码生成:第二种:根据pdf模板生成.当前 ...

  9. JAVA 使用Itext模板生成pdf,解决图片插入,文本域超出字体缩放,半自动换行

    1.前言 前一段时间遇到一个制作Pdf的业务,自己下来摸索了一下,基本上解决.将其中遇到的几个问题及解决方法做以记录,仅供大家参考. 首先在这里对于刚接触该类型业务的同学说明下,ItexPdf支持使用 ...

最新文章

  1. 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫
  2. css菜单缓慢滑动_如何使用HTML,CSS和JavaScript构建滑动菜单栏
  3. matlab 级联cic,Matlab中CIC滤波器的应用
  4. android device monitor命令行窗口在哪里_Vulkan在Android使用Compute shader
  5. 阅读替换净化规则_usmile电动牙刷头适配Y1/Y4/45度小白刷大理石一号刷P1替换激泡...
  6. java压缩对象_Java 对象指针压缩
  7. HTML5知识点汇总
  8. 我眼中的分布式系统可观测性
  9. android设置view透明度渐变,android中 怎么实现一张图片从左到右透明度改变渐变消失的动画效果 Android 动态渐变 泽.. - 贪吃蛇学院-专业IT技术平台...
  10. HANA SQL基础
  11. 西门子PID程序,西门子PLC 1200和G120西门子 变频器Modbud RTU通讯,带西门子触摸屏,带变频器参数/Modbus通讯报西门子PID程序
  12. mysql字段长度的作用_数据库字段的长度 作用
  13. java.exe占用8081端口
  14. Android acra 日志上报,android acra错误日志上报
  15. 2014阿里巴巴实习生招聘-研发工程师笔试题/网络编程小结
  16. 浅谈“面向接口编程” :依赖反转 IOC 与 DI (容器控制反转与依赖注入)
  17. 初级前端工程师课程导航-姜威-专题视频课程
  18. 回合制html代码,老框架新思路 最新好玩的回合制网页游戏盘点
  19. flex中dataGrid的编辑功能 精华
  20. 【基础篇】C#基础知识——面向对象

热门文章

  1. android onClickListener onLongClickListener事件冲突
  2. 人的效率还是机器的效率?
  3. file表单元素怎样设置浏览按钮的样式
  4. 《记》rxjs分流操作符简单实现
  5. DOM_xss预备知识
  6. 高级版本 【多后台】
  7. 递归查找特定路径的所有特定文件
  8. 使用 .NET 平台,如何玩转 Universal Windows 应用?
  9. poj_1442 Treap
  10. IplImage 封装释放