/**
     * 创建(table)PDF,处理cell 跨页处理
     * @param savePath(需要保存的pdf路径)
     * @param pmbs (数据库查询的数据)
     * @return

  *http://www.cnblogs.com/qgc88/
     */
    private String createPDFTable(String savePath, LinkedList<ProjectManageBase> pmbs){
        try{
        Document document = new Document();
       // String separator = System.getProperties().getProperty("file.separator");
        FileOutputStream out = new FileOutputStream(savePath);
       
        PdfWriter.getInstance(document, out);
        document.open();

PdfPTable table = new PdfPTable(7);
       table.setWidthPercentage(100);
       
       table.getDefaultCell().setPaddingLeft(1);
       table.getDefaultCell().setPaddingRight(1);
       table.getDefaultCell().setPaddingTop(2);
       table.getDefaultCell().setPaddingBottom(2);
       table.getDefaultCell().setVerticalAlignment(Element.ALIGN_CENTER);
      // cell 跨页处理:
       table.setSplitLate(false);
       table.setSplitRows(true);
       PdfPCell cell = new PdfPCell();
       
       cell.setColspan(7);
       cell.setUseAscender(true);
       cell.setHorizontalAlignment(Element.ALIGN_CENTER);
       cell.setVerticalAlignment(Element.ALIGN_TOP);
      // 标题居中处理:

BaseFont fontChinese = null;
    try {
        fontChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
                BaseFont.NOT_EMBEDDED);// 设置中文字体
    } catch (Exception e) {
        e.printStackTrace();
    }
      Font chinese = new Font(fontChinese, 18, Font.BOLD);
       Paragraph title = new Paragraph("组评审结果清单", chinese);
       title.setAlignment(Element.ALIGN_CENTER);
       cell.addElement(title);
       cell.setBorderWidth(0);
       table.addCell(cell);
       
       //列的标题
       Font chinese_cellTitle = new Font(fontChinese, 12, Font.BOLD);
       for (int k = 0; k < 7; k++) {
           String celCount="";
           if(k==0){
               celCount="申报项目";
           }else if(k==1){
               celCount="申报单位";
           }else if(k==2){
               celCount="申报经费\n(万元)";
           }else if(k==3){
               celCount="综合评估\n分数";
           }else if(k==4){
               celCount="综合评估\n名次";
           }else if(k==5){
               celCount="立项等级";
           }else if(k==6){
               celCount="建议经费\n(万元)";
           }
           
           Paragraph count = new Paragraph(celCount, chinese_cellTitle);//支持中文
           count.setAlignment(Element.ALIGN_CENTER);
           cell.setPhrase(count);
           //cell.addElement(count)
           table.addCell(count);
       }
       
       Font chinese2 = new Font(fontChinese, 12, Font.NORMAL);
           for (int j = 0; j <pmbs.size(); j++) {//数据(List)
               for (int k = 0; k < 7; k++) {//内容的列
                   String celCount="";
                   if(k==0){
                       celCount=pmbs.get(j).getProjectName();
                   }else if(k==1){
                           celCount=pmbs.get(j).getSuoshudanwei();
                   }else if(k==2){
                       celCount=pmbs.get(j).getChiefAuditNames();
                   }else if(k==3){
                       celCount=pmbs.get(j).getCreateYear();
                   }else if(k==4){
                       celCount=pmbs.get(j).getCreUserId();
                   }else if(k==5){
                       celCount=pmbs.get(j).getShenhejieguo();
                   }else if(k==6){
                       celCount=pmbs.get(j).getBeizhu();
                   }
                   Phrase count = new Phrase(celCount, chinese2);//支持中文
                 //  count.setAlignment(Element.ALIGN_CENTER);
                   cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                   cell.addElement(count);
                   table.addCell(count);
               }
        
    }
           
           
      document.add(table);
      
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
      Paragraph date = new Paragraph(sdf.format(new Date()),chinese2);   
      date.setAlignment(Element.ALIGN_RIGHT);   
      document.add(date);
      
      document.close();
      System.gc();
      return "success";
        } catch (Exception e) {
            e.printStackTrace();
            return "error";
        }
    }

IText 生成pdf,处理table cell列跨页缺失的问题的更多相关文章

  1. Java Itext 生成PDF文件

    利用Java Itext生成PDF文件并导出,实现效果如下: PDFUtil.java package com.jeeplus.modules.order.util; import java.io.O ...

  2. iText生成PDF 格式报表

    1.导包 <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artif ...

  3. 在linux环境下使用itext生成pdf

    转载请注明出处 https://www.cnblogs.com/majianming/p/9537173.html 项目中需要对订单生成pdf文件,在不断的尝试之后,终于生成了比较满意的pdf文档. ...

  4. 用itext生成PDF报错:Font 'STSong-Light1' with 'UniGB-UCS2-H' is not recognized.

    用itext生成PDF报错,加上try catch捕获到异常是 BaseFont bFont = BaseFont.createFont("STSong-Light1", &quo ...

  5. 【PDF】java使用Itext生成pdf文档--详解

    [API接口]  一.Itext简介 API地址:javadoc/index.html:如 D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/ ...

  6. java使用iText生成pdf表格

    转载地址:http://www.open-open.com/code/view/1424011530749 首先需要你自己下载itext相关的jar包并添加引用,或者在maven中添加如下引用配置: ...

  7. 【Java】使用iText生成PDF文件

    iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  8. 使用 Itext 生成PDF

    一.生成PDF,所需jar包(itext-2.0.8.jar,iTextAsian.jar) 在springboot中只需要引入依赖即可,依赖代码如下: <dependency> < ...

  9. Itext生成pdf文件

    来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...

随机推荐

  1. laravel学习笔记(二)

    路由 HTTP方法:支持http1.1中所有类型传参方式,get,post,put,delete,options,patch Route::get($url,$callback); 路由参数: Rou ...

  2. 【HEVC简介】Inter Prediction Tools

    参考文献:见<High Efficiency Video Coding (HEVC)>Inter-Picture Prediction in HEVC章节 <HEVC标准介绍.HEV ...

  3. springmvc+maven搭建web项目之二 通过另一种方式配置spring

    1.创建maven web项目 2. 配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

  4. Vue踩坑第一步,安装Vue最新版本

    学习vue第一步肯定是安装vue-cli,那么肯定想去搜下如何安装vue-cli呢? 网上搜到的结果大都是: npm i vue-cli -g 输入vue -V发现: 输入node -v发现: 自己明 ...

  5. 283. Move Zeroes@python

    Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...

  6. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  7. [LOJ] 分块九题 4

    https://loj.ac/problem/6280 区间修改,区间求和. 本来线段树的活. //Stay foolish,stay hungry,stay young,stay simple #i ...

  8. Java方法传递参数传值还是传址的问题

    这几天重构项目代码遇到一个疑问:可不可以在方法A中定义一个boolean变量b为false,然后A调用方法C把b传递到C方法中经过一些列业务判断后修改为true,C执行结束后A方法中b的值还是原来的f ...

  9. 如何用纯 CSS 创作一种有削铁如泥感觉的菜单导航特效

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/XqYroe 可交互视频教 ...

  10. 使用Docker compose编排Laravel应用

    前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环 ...