`

iText生成PDF - 实例

阅读更多
 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

 用iText生成PDF文档需要5个步骤:

 ① 建立com.itextpdf.text.Document对象的实例。
    Document document = new Document(); 
 ② 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
    PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF")); 
 ③ 打开文档。
   document.open(); 
 ④ 向文档中添加内容。
    document.add(new Paragraph("Hello World")); 
 ⑤ 关闭文档。
    document.close(); 

 通过上面的5个步骤,就能产生一个Helloworld.PDF的文件,文件内容为"Hello World"。


package com.kjlink.util;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

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.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * iText 学习
 * Paragraph 缩进的段落
 * Chapter PDF文档中的章节
 * Font 字体规范
 * List 一个列表,顺序包含许多ListItems
 * Table 单元格的表
 * 
 * @author Bing
 *
 */
public class PDF4iText {
	/**
	 * 
	 * @param os  PDF输出的目录
	 * 
	 * 以下参数是params所对应的Key-value
	 * @param imgPath Logo图片地址
	 * 
	 * @param userName 领用人
	 * @param userDept 领用部门
	 * @param borrowTime 领用时间
	 * @param borrowRemark 领用事由
	 * @param borrowDate 领用日期
	 * 
	 * @param assetName 固定资产名称
	 * @param assetModel 固定资产型号
	 * @param assetConfig 固定资产配置
	 * @param assetSequence 固定资产序列号
	 * 
	 */
	public static void createPDF(OutputStream os, Map<String, String> params) {

		Document document = new Document(PageSize.A4, 50, 50, 100, 10);// 页面大小,左右上下页边距
		
		try {
			PdfWriter.getInstance(document, os);
			// 添加PDF文档的一些信息
			document.addTitle("Hello World Example"); // 标题
			document.addSubject("This example explains how to add metadata."); // 主题
			document.addAuthor("xuxb"); // 作者
			document.addCreator("My program using iText"); // 创建者
			document.addKeywords("iText");  // 关键字
			
			BaseFont baseFont = BaseFont.createFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
//			BaseFont baseFont = BaseFont.createFont("C:\\Windows\\Fonts\\msyh.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
//			BaseFont baseFont1 = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
			BaseFont baseFont1 = BaseFont.createFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
			
			Font simsun = new Font(baseFont, 12, Font.NORMAL);
			Font italic = new Font(baseFont, 10, Font.ITALIC);
			Font STSong = new Font(baseFont1, 10, Font.NORMAL);
			Font bold = new Font(baseFont1, 12, Font.BOLD);
			
			// 打开文档,将要写入内容
			document.open();
			
			float[] f = {40,60};
			PdfPTable header = new PdfPTable(f); 
			header.setSpacingBefore(5f);
			header.setWidthPercentage(100);
			header.getDefaultCell().setBorder(0);
//			LOGO KJLink
			PdfPCell h1 = new PdfPCell(Image.getInstance(params.get("imgPath")));
			h1.setBorder(0);
			h1.setBorderWidthBottom(0.2f);
			h1.setPaddingTop(25f);
//			h1.setFixedHeight(100);
			header.addCell(h1);
			PdfPCell h2 = new PdfPCell(new Paragraph("固定资产领用单", italic));
			h2.setBorder(0);
			h2.setBorderWidthBottom(0.2f);
			h2.setPaddingTop(20f);
			h2.setHorizontalAlignment(Element.ALIGN_RIGHT);
			header.addCell(h2);
			
			document.add(header);
			
			PdfPTable table = new PdfPTable(6); // Code 1
			table.setWidthPercentage(100);
			table.setSpacingBefore(10f);
//			table.getDefaultCell().setBorder(0);
			table.setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
			
//			第一行 row1
			PdfPCell row1 = new PdfPCell(new Paragraph("KJLINK International Co. 固定资产领用单", bold));
			row1.setColspan(6);
//			cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置内容水平居中
			row1.setFixedHeight(30);
			row1.setPadding(5);
			row1.setHorizontalAlignment(Element.ALIGN_CENTER); // 垂直居中
			table.addCell(row1);
			
//			 第二行 row2
			PdfPCell hCell1 = new PdfPCell(new Paragraph("领用人", simsun));
			hCell1.setHorizontalAlignment(Element.ALIGN_CENTER);
			hCell1.setFixedHeight(25);
			table.addCell(hCell1);
			table.addCell(new Paragraph(params.get("userName"), STSong));

			PdfPCell hCell2 = new PdfPCell(new Paragraph("领用部门", simsun));
			hCell2.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(hCell2);
			table.addCell(new Paragraph(params.get("userDept"), STSong));
			PdfPCell hCell3 = new PdfPCell(new Paragraph("领用时间", simsun));
			hCell3.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(hCell3);
			table.addCell(new Paragraph(params.get("borrowTime"), STSong));
			
//			 第三行 row3
			PdfPCell row3 = new PdfPCell(new Paragraph("领用事由:", STSong));
			row3.setColspan(6);
			row3.setFixedHeight(20);
			row3.setPadding(5);
			row3.setBorder(0);
			row3.setBorderWidthLeft(0.2f);
			row3.setBorderWidthRight(0.2f);
//			row3.setBorderColorBottom(BaseColor.WHITE);
			row3.setVerticalAlignment(Element.ALIGN_CENTER);
			table.addCell(row3);
			
//			 第三行 row3
			PdfPCell row3_2 = new PdfPCell(new Paragraph(params.get("borrowRemark"), STSong));
			row3_2.setColspan(6);
			row3_2.setBorder(0);
			row3_2.setFixedHeight(80);
			row3_2.setPaddingRight(10f);
			row3_2.setBorderWidthLeft(0.2f);
			row3_2.setBorderWidthRight(0.2f);
//			row3_1.setBorderColorTop(BaseColor.WHITE);//ColorTop(BaseColor.RED);
			row3_2.setHorizontalAlignment(Element.ALIGN_LEFT);
			row3_2.setPaddingLeft(20f);
			table.addCell(row3_2);
			
//			 第三行 row3
			PdfPCell row3_1 = new PdfPCell(new Paragraph("签名:                        " + params.get("borrowDate"), simsun));
			row3_1.setColspan(6);
			row3_1.setBorder(0);
			row3_1.setPaddingRight(10f);
			row3_1.setBorderWidthLeft(0.2f);
			row3_1.setBorderWidthRight(0.2f);
//			row3_1.setBorderColorTop(BaseColor.WHITE);//ColorTop(BaseColor.RED);
			row3_1.setFixedHeight(20);
			row3_2.setPaddingBottom(6f);
			row3_1.setHorizontalAlignment(Element.ALIGN_RIGHT);
			table.addCell(row3_1);
		
			
//			 第四行 row4
			PdfPCell row5 = new PdfPCell(new Paragraph("领用资产情况", bold));
			row5.setColspan(6);
			row5.setFixedHeight(25);
			row5.setPadding(5);
			row5.setHorizontalAlignment(Element.ALIGN_CENTER); // 垂直居中
			table.addCell(row5);
			
//			 第五行 row5
			PdfPCell cell1 = new PdfPCell(new Paragraph("固定资产名称", simsun));
			cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell1.setFixedHeight(25);
			table.addCell(cell1);
			PdfPCell cell2 = new PdfPCell(new Paragraph("型号", simsun));
			cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(cell2);
			PdfPCell cell3 = new PdfPCell(new Paragraph("配置", simsun));
			cell3.setColspan(2);
			cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(cell3);
			PdfPCell cell4 = new PdfPCell(new Paragraph("序列号", simsun));
			cell4.setColspan(2);
			cell4.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(cell4);
			
//			 第五行 动态行
			PdfPCell cell21 = new PdfPCell(new Paragraph(params.get("assetName"), STSong));
			cell21.setHorizontalAlignment(Element.ALIGN_CENTER);
			cell21.setFixedHeight(25);
			table.addCell(cell21);
			PdfPCell cell22 = new PdfPCell(new Paragraph(params.get("assetModel"), STSong));
			cell22.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(cell22);
			PdfPCell cell23 = new PdfPCell(new Paragraph(params.get("assetConfig"), STSong));
			cell23.setColspan(2);
			cell23.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(cell23);
			PdfPCell cell24 = new PdfPCell(new Paragraph(params.get("assetSequence"), STSong));
			cell24.setColspan(2);
			cell24.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.addCell(cell24);
			
			
//			空白行1
			table.addCell(" ");
			table.addCell(" ");
			PdfPCell blank11 = new PdfPCell(new Paragraph(" "));
			blank11.setFixedHeight(25);
			blank11.setColspan(2);
			table.addCell(blank11);
			PdfPCell blank12 = new PdfPCell(new Paragraph(" "));
			blank12.setColspan(2);
			table.addCell(blank12);
			
//			空白行2
			table.addCell(" ");
			table.addCell(" ");
			PdfPCell blank21 = new PdfPCell(new Paragraph(" "));
			blank21.setFixedHeight(25);
			blank21.setColspan(2);
			table.addCell(blank21);
			PdfPCell blank22 = new PdfPCell(new Paragraph(" "));
			blank22.setColspan(2);
			table.addCell(blank22);
//			空白行3
			table.addCell(" ");
			table.addCell(" ");
			PdfPCell blank31 = new PdfPCell(new Paragraph(" "));
			blank31.setColspan(2);
			blank31.setFixedHeight(25);
			table.addCell(blank31);
			PdfPCell blank32 = new PdfPCell(new Paragraph(" "));
			blank32.setColspan(2);
			table.addCell(blank32);
			
//			 第六行 row6
			PdfPCell row6 = new PdfPCell(new Paragraph("分管领导意见:", simsun));
			row6.setColspan(6);
			row6.setFixedHeight(120);
			row6.setPadding(5);
			row6.setVerticalAlignment(Element.ALIGN_CENTER);
			table.addCell(row6);
			
//			 第七行 row7
			PdfPCell row7 = new PdfPCell(new Paragraph("总裁意见:", simsun));
			row7.setColspan(6);
			row7.setFixedHeight(120);
			row7.setPadding(5);
			row7.setVerticalAlignment(Element.ALIGN_CENTER);
			table.addCell(row7);
			
//			 将table添加到document
			document.add(table);
			
			document.add(new Paragraph("KJLink International, Inc", STSong));
			document.add(new Paragraph("凯捷技术有限公司 (c)Copyright 2005", STSong)); // 
			
			System.out.println("生成PDF成功!");  // tips message
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (document.isOpen()) {
				document.close();
			}
		}
	}
	
	public static void main(String[] args) throws FileNotFoundException {
		
		OutputStream os = new FileOutputStream("D:\\固定资产领用单.pdf"); // 输出PDF到指定位置
		
		Map<String, String> params = new HashMap<String, String>(); // 参数列表
		params.put("imgPath", "C:\\Users\\Bing\\Pictures\\KJLink.png"); // Logo图片地址
		params.put("userName", "iteye.com");
		params.put("userDept", "java频道");
		params.put("borrowTime", "11-07-24 10:00");
		params.put("borrowRemark", "去深圳出差一个月。");
		params.put("borrowDate", "2011年07月24日");
		params.put("assetName", "KJ-AA-0001");
		params.put("assetModel", "ThinkPad T61");
		params.put("assetConfig", "酷睿i5双核,2GDDR3内存,80G硬盘");
		params.put("assetSequence", "1111-2222-3333");
		
		PDF4iText.createPDF(os, params);
	}
}


分享到:
评论

相关推荐

    itext生成PDF和word的两个demo

    里面包含两个demo实例,分别是itext-pdf生成pdf的,一个是itext-rtf生成word的。其中还附有学习笔记一份,上述生成的文档包括对字体的选择(本地或者iTextAsian里面的),有对图片的添加,有对样式的调整,有对table...

    IText5 Excel转pdf ,带有添加文字水印,图片水印实例poi-3.9,itextpdf-5.5.9

    共3个方法,一个是生成pdf,第2个是加文字水印,第3个是加图片水印 public static void main(String[] args) { String filepath = "C:\\Users\\igiroad\\Desktop\\申请汇总表 (3).xls"; String pdffilepath = ...

    Itext利用模板生成PDF实例demo,导入即可使用,供前台下载,打印,预览等

    Itext利用模板生成PDF实例demo,导入即可使用,唯一缺点就是表格数据循环次数不确定时,有可能造成分页,建议使用后台代码生成的PDF,可以带页码;见本人其他分享资源。

    权威Itext生成pdf

    利用iText五步创建一个PDF文件:helloword。 第一步,创建一个 iTextSharp.text.Document对象的实例: Document document = new Document(); 第二步,为该Document创建一个Writer实例: PdfWriter.getInstance...

    pdf生成之itext使用

    iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。  iText的安装非常方便,在...

    itext生成PDF设置页眉页脚的实例详解

    主要介绍了itext生成PDF设置页眉页脚的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

    Java开源工具iText生成PDF简单实例

    主要介绍了Java开源工具iText生成PDF简单实例,本文给出了3段代码实例,讲解创建一个简单PDF文件,在PDF中添加表格以及在PDF中添加图片,需要的朋友可以参考下

    itextpdf在已有pdf指定页及位置添加图片(包含jar及实例)

    在已有pdf文件中,指定页及绝对位置添加图片(包含itextpdf.jar及实例)

    itext2.1.7动态生成PDF实例

    NULL 博文链接:https://weigang-gao.iteye.com/blog/2224191

    PDF-Excel-Word文档生成实例

    pdf文档下载------itext word文档下载----------poi excel文档下载----------poi

    IText5 Excel转pdf ,带有添加文字水印,图片水印实例

    共3个方法,一个是生成pdf,第2个是加文字水印,第3个是加图片水印 public static void main(String[] args) { String filepath = "C:\\Users\\igiroad\\Desktop\\申请汇总表 (3).xls"; String pdffilepath = ...

    itext5pdf表格行变色实现过程源码+doc文档

    1.先创建PdfPTable对象,生成PDF表格cell之后,添加隔行换色的事件,将此事件在PdfPTable加入Document对象之前,插入进去。 2.隔行换色的事件需要自己写一个java类,里面去定义背景颜色和长宽高,实质就是在pdf表格...

    利用flying saucer 生成Pdf的例子

    实例介绍,包含中文问题的解决方法等,在生成pdf的过程中遇到的问题。希望对大家又算帮助

    asp·net生成PDF详解

    asp.net生成PDF详解 asp.net生成PDF PDF详解 用C#制作PDF文件全攻略 丽水市汽车运输集团有限公司信息中心 苟安廷 目 录 前 言 3 第一部分 iText的简单应用 4 第一章 创建一个Document 4 第一步 创建一个Document实例...

    iText 案例

    iText生成pdf完整案例,其中包括:表格,图片,html转换为pdf, Freemarker转换pdf, (该项目为工程,使用intellij idea打开即可)

    java根据模板动态生成PDF实例

    本篇文章主要介绍了java根据模板动态生成PDF实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Vs2008 下用C#生成PDF的源码

    要用本文的方法生成PDF文件,需要两个控件:itextsharp.dll和ICSharpCode.SharpZipLib.dll,由于示例代码实在太多,我将代码全部整理出来. 利用iText五步创建一个PDF文件:helloword。 第一步,创建一个 iTextSharp....

    JAVA PDF 水印生成

    java使用itext对PDF进行水印生成。包括:java创建PDF文档,java对PDF进行加水印。源码实例下载即可运行。

    实例+说明itext使用方式。包含jar等。直接复制可用。

    实例+说明itext使用方式。包含jar等。直接复制可用。包含对itext各种变量。函数的解释。生成带格式doc或者pdf。

Global site tag (gtag.js) - Google Analytics