`
javajack
  • 浏览: 22099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Itext应用封装(二)_生成表格

阅读更多

去年写了对itext封装,主要是向模板写数据,而在我们的项目中不是所有的表格都是用模板的,有些表格是动态的复杂的,有些是嵌套的,需要动态去生成表格及文档。

在这一部分中对生成表格进行了封装。

 

 

如:

根据行列生成表格:

	/**************************************************************************?/
	/**
	 * 根据行列数生成指定行列的空表格
	 * @param rows 行数
	 * @param cols 列数
	 * @return
	 */
	public PdfPTable createTable(int rows, int cols) {
		PdfPTable table = new PdfPTable(cols);
		
		for (int i = 0; i < rows * cols; i++) {
			PdfPCell cell;
			cell = new PdfPCell();

			cell.setFixedHeight(rowheight);
			table.addCell(cell);
		}
		table.setSpacingAfter(margin);
		table.setSpacingBefore(margin);
		return table;
	}

 

 

如根据行列生成表格:根据定制表格对象生成表格

 

	/**
	 * 根据指定单元格内容,生成表格,
	 * @param rows
	 * @param cols
	 * @param element 定制的表格对象
	 * @param db 数据对象,表格中存储的数据对象
	 * @return
	 */
	public PdfPTable createFreeTable(int rows, int cols, ElementTable et,DataBean db) {
		float[] colwidths = this.tp.getColwidths();
		float[] rowheights = this.tp.getRowheights();
		PdfPTable table = new PdfPTable(colwidths);
		
		table.setWidthPercentage(100f);
		Map<String, CellProperties> element = this
				.readElementTalbe(et, this.tp);
		int pan = 0;
		ArrayList<String> hascell = new ArrayList<String>();
		float tmprowheight = rowheight;

		for (int i = 0; i < rows; i++) {
			if (rowheights != null && i <= rowheights.length) {
				tmprowheight = rowheights[i];
			}
			for (int j = 0; j < cols; j++) {
				String key = i + "*" + j;
				if (hascell.contains(key))
					continue;
				PdfPCell cell;

				if (element.containsKey(key)) {
					CellProperties e = element.get(key);
					cell = this.getPdfPCell(e,db);
					//cell.setNoWrap(false);
					int type = e.getType();
					pan = e.getNum();
					// this.handlePdfPcell(cell, e);
					if (type == PConstant.rowspan) {
						cell.setRowspan(pan);
						for (int k = 1; k < pan; k++) {
							int tmprow;
							int tmpcol;
							tmprow = i + k;
							tmpcol = j;
							hascell.add(tmprow + "*" + tmpcol);
						}
					} else if (type == PConstant.colspan) {
						cell.setColspan(pan);
						for (int k = 1; k < pan; k++) {
							int tmprow;
							int tmpcol;
							tmprow = i;
							tmpcol = j + k;
							hascell.add(tmprow + "*" + tmpcol);
						}
					}
				} else
					cell = new PdfPCell();

				// 最小高度
				cell.setMinimumHeight(rowheight);
				cell.setFixedHeight(tmprowheight);

				table.addCell(cell);
			}
		}
		return table;
	}

 

其它的不在一一添加,附上所有代码及测试方法。

附件于2011年7月份完成,需要iText-2.1.7.jar及iTextAsian.jar的支撑。

分享到:
评论

相关推荐

    Java_Pdf_itext7-7.0.5

    在实际项目中,Java_Pdf_itext7-7.0.5 可能是一个示例项目或库的封装,展示了如何在Java应用中有效利用iText7的功能。开发者可以通过阅读源代码,学习如何集成这个库,以及如何实现各种PDF操作。文件列表中的"Java_...

    2个案例 自定义annotation进行查询对象封装 itext 打印案例

    它提供了丰富的API,可以用来生成表格、文本、图像、签名等元素,甚至支持复杂的布局和样式。在实际应用中,可能需要使用iText来生成报表、发票、合同等各类文档。 在iText的打印案例中,一般会包含以下几个步骤: ...

    使用ITEXT导出EXCEL工具类

    但我们可以利用ITEXT的`PdfWriter`和`Document`类来模拟Excel的表格结构,然后将生成的PDF转换为XLS或XLSX格式。以下是一些关键步骤: 1. **初始化**: 创建一个`Document`对象,它是ITEXT文档的基本构建块。这将...

    iText以及iText中文所需要的jar包

    除了基本的文本操作,iText还提供了表格、图像、超链接、书签、表单填充等功能,可以满足复杂的PDF生成需求。在实际开发中,根据项目需求,你可能还需要了解和使用到更多iText的高级特性。 总之,iText及其iText-...

    JAVA ITEXT 导出试卷

    开发者可能通过创建一个`PaperWriter`类,封装了试卷生成的逻辑,包括读取试题数据(可能是从数据库、CSV文件或XML文件中获取),然后使用iText将这些数据转换为PDF格式。`PaperWriter`可能包含了一系列方法,如`...

    itext 生成pdf 文件

    iText 是一个强大的Java库,专门用于生成和编辑PDF(Portable Document Format)文件。这个库在IT领域中广泛使用,因为它提供了丰富的API,允许开发者自定义PDF文档的各个方面,包括内容、格式、字体、颜色等。本文...

    iText生成pdf使用教程及一系列demo源码

    在实际应用中,为了提高代码的可维护性和复用性,建议将PDF生成的逻辑封装成服务或工具类。同时,注意处理可能出现的异常,如文件找不到、字体不支持等问题,确保程序的健壮性。 总之,iText是一个强大且灵活的PDF...

    itextpdf.zip(JavaPDF文件生成)

    JavaPDF文件生成是Java开发中一个重要的领域,主要用于创建、编辑和处理PDF文档。iTextPDF是一个流行的开源库,它提供了丰富的API...通过熟练掌握iTextPDF,开发者可以在Java应用程序中实现专业级的PDF生成和处理功能。

    itext5.5.11 dll

    1. **PDF创建**:iText5.5.11允许开发者动态生成PDF文档,可以添加文本、图像、表格、链接、注释等元素。 2. **PDF编辑**:可以对已有的PDF文档进行修改,如添加或删除页面、修改文本、更新链接等。 3. **表单处理...

    Itext打印各种样式报表集合

    在实际应用中,Itext不仅可以生成静态报表,还可以动态地根据数据库中的数据生成报表,这在企业级应用中非常常见。通过结合Java的数据库操作技术,如JDBC,可以从数据库中获取数据并填充到报表中。同时,Itext还支持...

    itext根据坐标在指定位置添加内容.zip

    在IT行业中,PDF文档处理是一项常见的任务,尤其是在报表生成、数据导出或文档自动化等领域。iText是一个流行的Java库,专门用于创建、编辑和修改PDF文档。本篇将围绕"itext根据坐标在指定位置添加内容"这一主题展开...

    ITEXT简单报表

    在实际应用中,如果代码“无需修改”可以直接使用,这通常意味着开发者已经做了很好的封装和参数化设计,使得用户可以根据自己的需求通过配置或传入参数来生成不同的报表。这种高度可复用的特性大大提高了开发效率。...

    itext in aciton2

    例如,你可以利用iText来生成报告、发票、证书等,或者对已有的PDF文档进行水印、签名、表格填充等操作。 对于.NET开发者,iText提供了与Java版本功能相当的.NET封装库iTextSharp.dll。这使得.NET开发者也能轻松地...

    java使用itext生成pdfdemo,直接执行main方法可用!代码文档中有配置文件的详细介绍

    通过阅读和运行这些代码,你可以更深入地了解如何在实际项目中应用iText生成PDF。 总结起来,iText是Java生成PDF的强大工具,通过学习和实践,开发者可以轻松创建复杂的PDF文档。在实际开发中,结合配置文件和详细...

    完美封装word excel ppt pdf文件解析包,生成手机页面

    标题提到的“完美封装word excel ppt pdf文件解析包,生成手机页面”是一个集成了多种文件格式解析能力的工具或库,其核心目标是将常见的办公文档(如Word、Excel、PPT和PDF)的内容抽取出来,并转化为适合手机浏览...

    基于Java的用iText类库制作PDF文档.zip

    在实际应用中,开发者通常会创建一个自定义的`PdfGenerator`类,封装上述操作,以便在不同场景下重用代码。 总之,"基于Java的用iText类库制作PDF文档.zip"这个资源包旨在帮助Java开发者掌握如何利用iText高效地...

    pdf-gen-java:基于iText Java库的简单PDF生成器

    这个项目的核心是通过封装iText库的一些关键功能,使得开发者能够更便捷地利用Java代码生成PDF文件。以下是对iText库及其在"pdf-gen-java"中的应用的详细解释: 1. **iText库介绍**: iText是一款由iText Group NV...

    利用iText包实现Java报表打印

    描述和部分内容进一步解释了iText包在不同场景下的应用,包括动态生成整个报表文件内容以及在已有PDF报表文档中填写数据域来完成报表。接着,文章主要讨论了如何通过编程来绘制和生成PDF报表文档。 知识点详细解释...

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

    在实现过程中,我们可以将PDF生成的组件封装成一个工具类PDFKit,它对外提供生成PDF的接口。HeaderFooterBuilder接口则用于定制PDF的页眉和页脚信息。此外,我们还可以创建一个builder包,专门处理除了模板之外的...

Global site tag (gtag.js) - Google Analytics