Itext生成合同

来源:互联网 发布:网络教育 高起专 时间 编辑:程序博客网 时间:2024/04/27 13:11

   这两天让我根据用户投资的记录,生成一个合同,然后可以让他下载.网上查了不少资料.简单介绍下我对这几个软件的理解

第一个就是用模板.,用adobe的软件,把pdf给模板化,然后给需要添加数据的地方设置属性字段,再在java代码里添加,但是有一个问题就是.我们这里的有个还款计划,是个动态的表格,无法指定具体的行和列,然后这个办法被pass了,在然后就是flying Source用html页面直接生成,这个生成对html页面也有一定的要求,我当时也是搞了半天才把他生成出来,后来发现,他好像没法读取动态的数据,这个问题,我现在有点不明白,希望大神指导我下,然后也被pass掉了,最后还是老老实实的看了下itext的官方文档,毕竟英文还是蛮累,在找了下网上的资料.在后台拼接了字符串,生成了一个合同,用的jar包共两个,一个是itext-asian,一个是itextpdf,先看下效果:

其中这个表格是可以动态追加的,代码如下

package test;import java.io.FileOutputStream;import java.io.IOException;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Element;import com.itextpdf.text.Font;import com.itextpdf.text.Image;import com.itextpdf.text.Paragraph;import com.itextpdf.text.Phrase;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;public class Test {        public static void main(String[] args) {              // 创建一个Document对象          Document document = new Document();            try {                // 生成名为 合同 的文档              PdfWriter.getInstance(document, new FileOutputStream("c://合同.pdf"));                /**              * 新建一个字体,iText的方法 STSongStd-Light 是字体,在iTextAsian.jar 中以property为后缀              * UniGB-UCS2-H 是编码,在iTextAsian.jar 中以cmap为后缀 H 代表文字版式是 横版, 相应的 V              * 代表竖版              */              BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);              Font bold_fontChinese = new Font(bfChinese, 8, Font.NORMAL);              Font impressFont = new Font(bfChinese, 12, Font.BOLD);              Font pressFont = new Font(bfChinese, 10, Font.NORMAL);              // 打开文档,将要写入内容              document.open();            Paragraph p=new Paragraph("借款协议", impressFont);           p.setAlignment(Element.ALIGN_CENTER);//借款协议居中           document.add(p);             p=new Paragraph("合同编号:111111111111111",bold_fontChinese);           p.setAlignment(Element.ALIGN_RIGHT);           document.add(p);            document.add(new Paragraph("本借款协议(下称\"本协议\")由以下各方于______年___月___日签署:", pressFont));              document.add(new Paragraph("甲方(出借人):", pressFont));            document.add(new Paragraph(" "));            //这里插一个表格,如果动态遍历,可一次插入,行不够,自动添加新的行            PdfPTable table = new PdfPTable(4);            table.addCell(new Phrase("用户名",pressFont));             table.addCell(new Phrase("借出金额",pressFont));            table.addCell(new Phrase("借款期限",pressFont));            table.addCell(new Phrase("每月应收利息",pressFont));            table.addCell(new Phrase("张三",pressFont));            table.addCell(new Phrase("1000",pressFont));            table.addCell(new Phrase("3",pressFont));            table.addCell(new Phrase("10",pressFont));            document.add(table);            String[] rules1_4 = {             "1. 丙方是一家在上海市合法成立并有效存续的有限责任公司,拥有网站(下称)的经营权,提供信用咨询,为交易提供信息服务;\n"+            "2. 乙方已在拇指金融网站注册,并承诺其提供给丙方的信息是完全真实的;\n"};                               for (String s : rules1_4) { //把上面的一段话遍历并添加到段落中                 document.add(new Paragraph(s, pressFont));                  document.add(new Paragraph(" ", pressFont));              }              document.add(new Paragraph("甲方:", pressFont));             document.add(new Paragraph("   ", pressFont)); //空行            document.add(new Paragraph("   ", pressFont));             document.add(new Paragraph("乙方:", pressFont));             document.add(new Paragraph("  ", pressFont));             document.add(new Paragraph("  ", pressFont));             document.add(new Paragraph("丙方:", pressFont));                         // 定义一个图片              Image jpeg = Image.getInstance("E:/QQ.png");                          // 图片靠左              jpeg.setAlignment(Image.LEFT);              document.add(jpeg);          } catch (DocumentException de) {              System.err.println(de.getMessage());          } catch (IOException ioe) {              System.err.println(ioe.getMessage());          }            // 关闭打开的文档          document.close();      }  }  

jar包:

如有写的不好的地方,希望大神 能多指教

0 0
原创粉丝点击