文档章节

iText导出pdf 表格文件

惮晰
 惮晰
发布于 2017/06/09 15:35
字数 621
阅读 23
收藏 0

 

IText2.1.7动态导出PDF文档 

@RequestMapping(value="/test")
	public ModelAndView getSubDetailExport() throws Exception {
		Map<String,Object> dataMap = new HashMap<String,Object>();
		List<String> titles = new ArrayList<String>();
		titles.add("第一列");		//1       
		titles.add("第二列");			//2
		titles.add("第三列");			//3
		titles.add("第四列");		//4

		
		List<Map<String,Object>> subList = new ArrayList<Map<String,Object>>();
		for(int i=0;i<10;i++){
            Map<String,Object> subpd = new HashMap<String,Object>();
			subpd.put("var1", "1111");			//1
			subpd.put("var2", "1111");			//2
			subpd.put("var3", "1111");			//3
			subpd.put("var4", "1111");		    //4
			subList.add(subpd);
		}
		dataMap.put("varList", subList);      
		dataMap.put("title", "这是一个标题");
        dataMap.put("titles", titles);   
		ObjectPdfView erv = new ObjectPdfView();					//执行excel操作
		ModelAndView mv = new ModelAndView(erv,dataMap);
		return mv;
	}
	

import org.springframework.web.servlet.view.document.AbstractPdfView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import java.awt.Color;

/**
 * @描述:导出pdf文件
 * @author:guoX
 * @date:2017/6/7
 */
public class ObjectPdfView extends AbstractPdfView {
    @Override
    protected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer,
        HttpServletRequest request, HttpServletResponse response) throws Exception {
        Rectangle rectPageSize = new Rectangle(900,900);// 定义页面大小
        document.setPageSize(rectPageSize);
        String title = (String)model.get("title"); // 设置名字
        title+=".pdf";
        List<String> titles = (List<String>) model.get("titles");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition",
                "attachment; filename=" + new String(title.getBytes("GB2312"), "ISO_8859_1"));
        document.addTitle(title);
        document.addSubject("export information");
        document.addAuthor("leno");
        document.addCreator("leno");
        document.addKeywords("pdf itext");
        // 定义页头和页尾
        HeaderFooter header = new HeaderFooter(new PdfParagraph(title, 20,
                true), false);
        header.setAlignment(Element.ALIGN_CENTER);
        HeaderFooter footer = new HeaderFooter(new Phrase(
                "This   is   page   "), new Phrase("."));
        footer.setAlignment(Element.ALIGN_CENTER);
        document.setHeader(header);
        document.setFooter(footer);
        document.open();
        PdfPTable table = new PdfPTable(titles.size());
        // table.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.setWidthPercentage(16 * titles.size());
        float[] TableWidths = { 15, 40, 15, 20 };//按百分比分配单元格宽带
        table.setTotalWidth(800);
        table.setLockedWidth(true);
        // 产生表格标题行
        for (int i = 0; i < titles.size(); i++) {
            PdfPCell cell = new PdfPCell(new PdfParagraph(titles.get(i), 14,
                    true));
            cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
            cell.setVerticalAlignment(Cell.ALIGN_MIDDLE);
            cell.setBackgroundColor(Color.gray);
            cell.setBorderColor(Color.black);

            table.addCell(cell);
        }

        List<Map<String,Object>> varList = (List<Map<String,Object>>) model.get("varList");
        for(int i=0; i<varList.size(); i++){
            Map<String,Object> vpd = varList.get(i);
            for(int j=0;j<titles.size();j++){
                PdfPCell cell = null;
                String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : "";
                if (varstr != null) {
                    cell = new PdfPCell(new PdfParagraph(varstr));
                }
                cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
                cell.setVerticalAlignment(Cell.ALIGN_MIDDLE);
                cell.setBorderColor(Color.black);
                table.addCell(cell);
            }


        }
        document.add(table);
        document.close();
    }
}


import java.io.IOException;
 
import com.lowagie.text.*;
import com.lowagie.text.pdf.BaseFont;
 
public class PdfParagraph extends Paragraph {
 
   private static final long serialVersionUID = -244970043180837974L;
 
   public PdfParagraph(String content) {
      super(content, getChineseFont(12, false));
   }
 
   public PdfParagraph(String content, int fontSize, boolean isBold) {
      super(content, getChineseFont(fontSize, isBold));
   }

   // 设置字体-返回中文字体
   protected static Font getChineseFont(int nfontsize, boolean isBold) {
      BaseFont bfChinese;
      Font fontChinese = null;
      try {
         bfChinese = BaseFont.createFont("c://windows//fonts//simsun.ttc,1",
                BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
         if (isBold) {
            fontChinese = new Font(bfChinese, nfontsize, Font.BOLD);
         } else {
            fontChinese = new Font(bfChinese, nfontsize, Font.NORMAL);
         }
      } catch (DocumentException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      return fontChinese;
   }
 
   // ת������
   protected Cell ChangeCell(String str, int nfontsize, boolean isBold)
         throws IOException, BadElementException, DocumentException {
      Phrase ph = ChangeChinese(str, nfontsize, isBold);
      Cell cell = new Cell(ph);
      // cell.setBorderWidth(3);
 
      return cell;
   }
 
   // ת������
   protected Chunk ChangeChunk(String str, int nfontsize, boolean isBold)
         throws IOException, BadElementException, DocumentException {
      Font FontChinese = getChineseFont(nfontsize, isBold);
      Chunk chunk = new Chunk(str, FontChinese);
      return chunk;
   }
 
   // ת������
   protected Phrase ChangeChinese(String str, int nfontsize, boolean isBold)
         throws IOException, BadElementException, DocumentException {
      Font FontChinese = getChineseFont(nfontsize, isBold);
      Phrase ph = new Phrase(str, FontChinese);
      return ph;
   }
 
}
 
import java.io.UnsupportedEncodingException;
 
public class StrHelp {
 
   public static String getChinese(String s) {
      try {
         return new String(s.getBytes("gb2312"), "iso-8859-1");
      } catch (UnsupportedEncodingException e) {
         return s;
      }
   }
}

 

© 著作权归作者所有

上一篇: linux sh启动jar包
下一篇: nginx安装
惮晰

惮晰

粉丝 5
博文 3
码字总数 806
作品 0
西安
程序员
私信 提问
使用iText库创建PDF文件

原文地址:使用iText库创建PDF文件 阅读目录 前言 iText库概述 iText库常用类 iText Hello World示例 给PDF文件设置文件属性 PDF中添加图片 PDF中创建表格 PDF中创建列表 PDF中设置样式/格式...

spinachgit
2017/10/24
182
0
iText 5.4.5 发布,Java 的 PDF 操作类库

iText 5.4.5 完成对 PDF/A-2 和 PDF/A-3 的支持,增加 XAdES-EPES 的支持;修复了 PDF/UA 相关问题,包括 iText RUPS 问题;改进解析功能和数字签名处理。 iText是一个非常著名的能够快速产生...

oschina
2013/12/06
2.2K
7
java(iText)工具包生成PDF

PDF操作类库 iText iText是一个非常著名的能够快速产生PDF文件的Java类库。支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合 iText的更新变化很大,早期版本在PDF样式上可能会有瑕...

王念博客
2016/04/01
5.4K
2
iText 5.2.0 发布,PDF 开发包

iText 5.2.0 发布了,该版本大部分的改进都集中在 PDF 解析上,支持特殊的编码和多种国外语言,修复了解析错误以及对一些错误的 PDF 语法更加适应,此外 iText 现在可支持生成超过 2G 的文件...

红薯
2012/03/01
1K
0
java操作PDF(PDFBOX和Itext框架)

java有很多可以操作pdf的框架,pdfbox和itext就是其中的两种 pdfbox有如下作用 提取文本,包括Unicode字符。 和Jakarta Lucene等文本搜索引擎的整合过程十分简单。 加密/解密PDF文档。 从PDF...

王小明123
2013/07/24
6.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部