`

itext生成pdf文件-表格

阅读更多

    生成pdf常用的插件有iReport、和itext,这里将使用itext生成pdf文件。

    多于的话不说直接上demo和需要的jar,如果pdf中有图片要画的话可以用jfreeChart画。

package com.pdf;

import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

public class PDFReport1 {
	int maxWidth = 520;
	private static Font keyfont; // 设置字体大小
	private static Font textfont; // 设置字体大小

	// 建立一个Document对象
	Document document = new Document();

	static {
		BaseFont bfChinese;
		try {
			bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
			keyfont = new Font(bfChinese, 8, Font.BOLD); // 设置字体大小
			textfont = new Font(bfChinese, 8, Font.NORMAL); // 设置字体大小
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 设置pdf样式
	 * @param file
	 */
	public PDFReport1(File file) {
		// 设置页面大小
		document.setPageSize(PageSize.A4);
		try {
			PdfWriter.getInstance(document, new FileOutputStream(file));
			document.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 添加表格前的说明
	 * @param value
	 * @param font
	 * @param align
	 * @param colspan
	 * @param boderFlag
	 * @return
	 */
	public PdfPCell createCell(String value, com.lowagie.text.Font font, int align, int colspan, boolean boderFlag) {
		PdfPCell cell = new PdfPCell();
		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
		cell.setHorizontalAlignment(align);
		cell.setColspan(colspan);
		cell.setPhrase(new Phrase(value, font));
		cell.setPadding(3.0f);
		if (!boderFlag) {
			cell.setBorder(0);
			cell.setPaddingTop(15.0f);
			cell.setPaddingBottom(8.0f);
		}
		return cell;
	}
	
	/**
	 * 向单元格添加字符串、设置单元格属性
	 * @param value 字符
	 * @param font	字体
	 * @param align 对齐方式
	 * @return
	 */
	public PdfPCell createCell(String value, com.lowagie.text.Font font, int align) {
		PdfPCell cell = new PdfPCell();
		
		//设置单元格对齐方式
		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
		cell.setHorizontalAlignment(align);
		cell.setPhrase(new Phrase(value, font));
		
		//设置边框颜色
		cell.setBorderColor(new Color(15, 15, 15));
		//设置单元格背景颜色
		cell.setBackgroundColor(new Color(118, 59, 167));
		return cell;
	}

	/**
	 * 向单元格添加字符串、设置单元格属性
	 * @param value 字符
	 * @param font	字体
	 * @return
	 */
	public PdfPCell createCell(String value, com.lowagie.text.Font font) {
		PdfPCell cell = new PdfPCell();

		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
		cell.setHorizontalAlignment(Element.ALIGN_CENTER);
		cell.setPhrase(new Phrase(value, font));
		
		cell.setBorderColor(new Color(15, 15, 15));
		cell.setBackgroundColor(new Color(59,162,167));
		return cell;
	}

	
	/**
	 * 向单元格中添加图片
	 * @param image  图片
	 */
	public PdfPCell createCell() {
		PdfPCell cell = new PdfPCell();
		try {
			cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
			cell.setHorizontalAlignment(Element.ALIGN_CENTER);
			
			Image image = Image.getInstance ("D:\\Arrows_Black_InTable_Down.png");
			//设置图片大小
//			image.scaleAbsoluteWidth(7);
//			image.scaleAbsoluteHeight(11);
			image.scaleAbsolute(7,11);
			
			//添加图片
			cell.addElement(image);
			
			//设置边框颜色
			cell.setBorderColor(new Color(15, 15, 15));
			//设置单元格背景颜色
			cell.setBackgroundColor(new Color(59,162,167));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return cell;
	}
	
	
	public PdfPCell createCell(String value, com.lowagie.text.Font font, int align, int colspan) {
		PdfPCell cell = new PdfPCell();
		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
		cell.setHorizontalAlignment(align);
		cell.setColspan(colspan);
		cell.setPhrase(new Phrase(value, font));
		return cell;
	}

	
	public PdfPTable createTable(int colNumber) {
		PdfPTable table = new PdfPTable(colNumber);
		try {
			table.setTotalWidth(maxWidth);
			table.setLockedWidth(true);
			table.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.getDefaultCell().setBorder(1);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return table;
	}

	public PdfPTable createTable(float[] widths) {
		PdfPTable table = new PdfPTable(widths);
		try {
			table.setTotalWidth(maxWidth);
			table.setLockedWidth(true);
			table.setHorizontalAlignment(Element.ALIGN_CENTER);
			table.getDefaultCell().setBorder(1);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return table;
	}

	public PdfPTable createBlankTable() {
		PdfPTable table = new PdfPTable(1);
		table.getDefaultCell().setBorder(0);
		table.addCell(createCell("", keyfont));
		table.setSpacingAfter(20.0f);
		table.setSpacingBefore(20.0f);
		return table;
	}

	public void generatePDF() throws Exception {
		PdfPTable table = createTable(5);
		table.addCell(createCell("学生信息列表:", keyfont, Element.ALIGN_LEFT, 5, false));
		
		table.addCell(createCell("姓名", keyfont, Element.ALIGN_CENTER));
		table.addCell(createCell("年龄", keyfont, Element.ALIGN_CENTER));
		table.addCell(createCell("性别", keyfont, Element.ALIGN_CENTER));
		table.addCell(createCell("住址", keyfont, Element.ALIGN_CENTER));
		table.addCell(createCell("升降", keyfont, Element.ALIGN_CENTER));
		
		for (int i = 0; i < 5; i++) {
			table.addCell(createCell("姓名" + i, textfont));
			table.addCell(createCell(i + 15 + "", textfont));
			table.addCell(createCell((i % 2 == 0) ? "男" : "女", textfont));
			table.addCell(createCell("地址" + i, textfont));
			
			//添加图片
			table.addCell(createCell());
		}
		document.add(table);

		document.close();
	}

	public static void main(String[] args) throws Exception {
		File file = new File("D:\\text.pdf");
		file.createNewFile();
		new PDFReport1(file).generatePDF();
	}
}

 

分享到:
评论

相关推荐

    java使用itextpdf、itext-asian对pdf文件加水印

    5. **运行示例**:在提供的`pdf-demo`中,应该有一个示例代码,你可以根据自己的需求进行调整并运行这个代码,生成带有中文水印的PDF文件。 通过以上步骤,你可以在Java环境中利用iTextPDF和iText-Asian库为PDF文件...

    itext-asian-5.2.0.jar和itextpdf-5.5.5.jar

    10. **PDF版本兼容**:iText库生成的PDF文件可以遵循不同的PDF标准,如PDF/A、PDF/UA等,满足不同应用场景的需求。 在实际项目中,开发者通常会结合这两个JAR文件,利用iText提供的API来实现各种PDF相关的功能。...

    itextpdf 导出pdf 表格 自动分页中文 目录

    3. **PDF表格自动分页**: 在生成PDF文档时,如果一个表格太长以至于无法在一页内完全显示,iTextPDF可以自动将其分页。通过调整表格属性,如行高、列宽,以及设置分页策略,可以确保表格在每一页上都保持完整的结构...

    itext相关JARitext-asian-5.2.0及itextpdf-5.5.13.1.zip

    iTextPDF库允许开发者动态生成PDF,比如添加文本、图像、表格、链接,甚至复杂的布局和交互元素。此外,它还支持PDF文档的合并、分割、水印添加以及表单填写等功能。 使用iText,开发者可以实现以下功能: 1. **...

    itext-asian-5.2.0.jar、itextpdf-5.5.5.jar JAR包

    这个库允许开发者动态生成PDF文档,包括添加文本、图像、表格、链接、注释等元素。同时,它还支持读取和解析现有的PDF文档,以便进行编辑或提取信息。此外,iTextPDF还提供了数字签名、加密和表单处理等功能,以满足...

    iText生成PDF - 实例

    在本篇中,我们将深入探讨如何使用iText库来生成PDF文件,以及相关的源码和工具应用。 首先,我们需要引入iText库的相关依赖。在提供的文件列表中,可以看到`itextpdf-5.1.1.jar`和`itextasian.jar`这两个文件。`...

    itext 生成pdf 目录

    在使用iText生成PDF目录时,要注意几点: - 确保每个书签都有一个对应的目标位置,否则在PDF中点击书签可能无法正确跳转。 - 避免内存泄漏,尤其是在处理大量书签时,要及时释放资源。 - 书签层次不宜过深,以免影响...

    初学Itext 生成PDF 表格,条形码(一维),图片

    对于初学者来说,掌握使用iText生成PDF文档中的表格、一维条形码和图片是一项基本技能。此外,需要注重代码中字符串的准确性,避免由于扫描或输入错误导致的问题。熟练掌握iText库的使用,可以使开发者在处理PDF文件...

    itext-asian-5.2.0.jar和itextpdf-5.5.5.jar两个JAR包

    在生成PDF文档时,如果你的文本包含中文字符,此库将确保它们在输出的PDF中清晰且准确地显示。它支持Unicode,能够处理多语言环境,是处理中文PDF文档的重要工具。 `itextpdf-5.5.5.jar` 是iText库的主要部分,是一...

    使用itext生成PDF文件

    通过以上步骤,你应该能基本掌握使用iText生成PDF文件的方法。在实际应用中,可以根据需要调整和扩展代码,实现更丰富的PDF文档生成。如果你需要深入学习,可以参考官方文档或相关的博客资源,如提供的博文链接,...

    itext7-7.0.2(java的pdf jar)

    总的来说,iText7-7.0.2的这个Java PDF库可以用于各种场景,例如创建PDF文档、添加表单字段、处理图像、生成和读取条形码、签署PDF文件,以及对PDF进行各种高级操作。开发人员可以根据自己的需求选择相应的模块,...

    html模板结合itextpdf生成pdf文档--demo

    本教程主要探讨如何利用HTML模板和iTextPDF库来创建PDF文件,同时也会提及Apache POI和Freemarker在导出Excel方面的应用,以及如何在PDF上添加文字水印。 首先,iTextPDF是一个强大的Java库,专门用于生成和修改PDF...

    iText-2.1.3 iTextAsian iText-rtf-2.1.3 jar包

    这个版本支持PDF 1.4规范,意味着你可以创建符合这一标准的PDF文件。通过使用iText,开发者可以方便地在Java应用程序中集成PDF文档的生成和处理功能。 iTextAsian是iText的一个扩展,专为处理亚洲语言(如中文、...

    使用iText生成PDF.doc

    以下是一些关于如何使用iText生成PDF的关键知识点: 1. **安装与获取iText**: 要使用iText,首先需要从其官方源代码托管平台SourceForge下载相应的.jar文件。基础的iText.jar提供了基本的PDF生成功能,但如果你...

    itextpdf-5.5.5.jar

    iTextPDF作为一个强大的PDF操作工具包,为开发者提供了丰富的API,使得生成、编辑PDF文件变得简单易行。本文将详细探讨iTextPDF 5.5.5版本的核心功能和使用方法。 iTextPDF是iText库的一个子项目,专注于PDF文档的...

    itextpdf-5.5.12.jar+itext-asian-5.2.0.jar

    1. **创建PDF**:你可以使用iText动态生成PDF文档,这在报表生成、发票打印等场景中非常有用。 2. **编辑PDF**:添加文本、图像、表格、链接、注释等,或者修改已有的PDF文档内容。 3. **合并与分割PDF**:将多个PDF...

    freemarker+itext生成PDF

    这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...

    java itext生成PDF文件

    在本文中,我们将深入探讨如何使用iText库生成PDF文件,并特别关注在创建表格时进行单元格合并的方法。 首先,`itextpdf-5.5.10.jar`是iText库的核心组件,包含了生成和操作PDF的基本功能。这个版本的iText支持PDF ...

    itextpdf-5.5.13

    首先,iTextPDF的核心在于其 PdfWriter 类,它是生成PDF文件的关键。PdfWriter允许开发者创建一个新的PDF文档,或者向已存在的PDF文档添加内容。通过创建一个PdfWriter实例,开发者可以指定输出流(如文件或内存流)...

Global site tag (gtag.js) - Google Analytics