itextpdf生成表格的常见用法

itextpdf生成表格的常见用法随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。在前面的文章介绍了itextpdf基本用法和使用itextpdf生成图片,itextpdf还可以实现很多功能,非常强大,今天主要介绍如何使用itextpdf生成表格式的pdf,在实际项目中也非常常用,首先举一个非常…

大家好,又见面了,我是你们的朋友全栈君。

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

itextpdf生成表格的常见用法

在前面的文章介绍了itextpdf基本用法使用itextpdf生成图片,itextpdf还可以实现很多功能,非常强大,今天主要介绍如何使用itextpdf生成表格式的pdf,在实际项目中也非常常用,首先举一个非常简单的例子,熟悉一下生成表格的基本步骤和流程:

	public static void createSimpleTable() throws IOException, DocumentException {
		Document document = new Document();
		PdfWriter.getInstance(document, new FileOutputStream(DEST));
		document.open();
		PdfPTable table = new PdfPTable(5);
		for (int aw = 0; aw < 10; aw++) {
			// 构建每一格
			table.addCell("cell");
		}
		document.add(table);
		document.close();
	}

这是最简单的步骤,表格的每一格内容,风格都一样,效果如下:
itextpdf生成表格的常见用法当然,在实际使用中,很有可能需求不会简单,比如要求设置背景颜色,边框颜色,每行宽度也可能不一致,甚至跨行,跨列,添加图片等等,下面就举一个综合的例子,展示这些设置的用法,请看示例:

	/**
	 * 表格各种属性综合使用
	 * 
	 * @throws IOException
	 * @throws DocumentException
	 */
	public static void createTablePdf() throws IOException, DocumentException {
		Document document = new Document();
		// 创建PdfWriter对象
		PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
		// 打开文档
		document.open();

		// 添加表格,4列
		PdfPTable table = new PdfPTable(4);
		 设置表格宽度比例为%100
		table.setWidthPercentage(100);
		// 设置表格的宽度
		table.setTotalWidth(500);
		// 也可以每列分别设置宽度
		table.setTotalWidth(new float[] { 160, 70, 130, 100 });
		// 锁住宽度
		table.setLockedWidth(true);
		// 设置表格上面空白宽度
		table.setSpacingBefore(10f);
		// 设置表格下面空白宽度
		table.setSpacingAfter(10f);
		// 设置表格默认为无边框
		table.getDefaultCell().setBorder(0);
		PdfContentByte cb = writer.getDirectContent();

		// 构建每个单元格
		PdfPCell cell1 = new PdfPCell(new Paragraph("Cell 1"));
		// 边框颜色
		cell1.setBorderColor(BaseColor.BLUE);
		// 设置背景颜色
		cell1.setBackgroundColor(BaseColor.ORANGE);
		// 设置跨两行
		cell1.setRowspan(2);
		// 设置距左边的距离
		cell1.setPaddingLeft(10);
		// 设置高度
		cell1.setFixedHeight(20);
		// 设置内容水平居中显示
		cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
		// 设置垂直居中
		cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);
		table.addCell(cell1);

		PdfPCell cell2 = new PdfPCell(new Paragraph("Cell 2"));
		cell2.setBorderColor(BaseColor.GREEN);
		cell2.setPaddingLeft(10);
		cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
		cell2.setVerticalAlignment(Element.ALIGN_MIDDLE);
		table.addCell(cell2);

		PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 3"));
		cell3.setBorderColor(BaseColor.RED);
		cell3.setPaddingLeft(10);
		// 设置无边框
		cell3.setBorder(Rectangle.NO_BORDER);
		cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
		cell3.setVerticalAlignment(Element.ALIGN_MIDDLE);
		table.addCell(cell3);

		// 在表格添加图片
		Image cellimg = Image.getInstance(IMG1);
		PdfPCell cell4 = new PdfPCell(cellimg, true);
		cell4.setBorderColor(BaseColor.RED);
		cell4.setPaddingLeft(10);
		cell4.setFixedHeight(30);
		cell4.setHorizontalAlignment(Element.ALIGN_CENTER);
		cell4.setVerticalAlignment(Element.ALIGN_MIDDLE);
		table.addCell(cell4);

		// 增加一个条形码到表格
		Barcode128 code128 = new Barcode128();
		code128.setCode("14785236987541");
		code128.setCodeType(Barcode128.CODE128);
		// 生成条形码图片
		Image code128Image = code128.createImageWithBarcode(cb, null, null);
		// 加入到表格
		PdfPCell cellcode = new PdfPCell(code128Image, true);
		cellcode.setHorizontalAlignment(Element.ALIGN_CENTER);
		cellcode.setVerticalAlignment(Element.ALIGN_MIDDLE);
		cellcode.setFixedHeight(30);
		table.addCell(cellcode);

		PdfPCell cell5 = new PdfPCell(new Paragraph("Cell 5"));
		cell5.setPaddingLeft(10);
		// 设置占用列数
		cell5.setColspan(2);
		cell5.setHorizontalAlignment(Element.ALIGN_CENTER);
		cell5.setVerticalAlignment(Element.ALIGN_MIDDLE);
		table.addCell(cell5);
		document.add(table);
		// 关闭文档
		document.close();
	}

上面需要注意的地方都有注释,相信通过这些设置基本应该能满足需求了,效果如下:

itextpdf生成表格的常见用法

 下面再给一个将一张图片作为表格背景的例子,请看代码:

	/**
	 * 创建以图片为背景的表格
	 * 
	 * @throws IOException
	 * @throws DocumentException
	 */
	public static void createImgBackgroundTable() throws IOException, DocumentException {
		Document document = new Document();
		PdfWriter.getInstance(document, new FileOutputStream(DEST));
		document.open();
		// 一列
		PdfPTable table = new PdfPTable(1);
		// 宽度300
		table.setTotalWidth(300);
		table.setLockedWidth(true);
		PdfPCell cell = new PdfPCell();
		Font font = new Font(FontFamily.HELVETICA, 12, Font.NORMAL, GrayColor.GRAYWHITE);
		Paragraph p = new Paragraph("A cell with an image as background color.", font);
		cell.addElement(p);
		// 构造图片
		Image image = Image.getInstance(BACKGROUD_IMG);
		// 设置CellEvent
		cell.setCellEvent(new ImageBackgroundEvent(image));
		// 按比例设置cell高度
		cell.setFixedHeight(200 * image.getScaledHeight() / image.getScaledWidth());
		table.addCell(cell);
		document.add(table);
		document.close();
	}
	static class ImageBackgroundEvent implements PdfPCellEvent {
		protected Image image;

		public ImageBackgroundEvent(Image image) {
			this.image = image;
		}

		public void cellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases) {
			try {
				PdfContentByte cb = canvases[PdfPTable.BACKGROUNDCANVAS];
				image.scaleAbsolute(position.getWidth(), position.getHeight());
				image.setAbsolutePosition(position.getLeft(), position.getBottom());
				cb.addImage(image);
			} catch (DocumentException e) {
				throw new ExceptionConverter(e);
			}
		}
	}

效果图如下:

itextpdf生成表格的常见用法

在itextpdf官网还有许多针对各种需求的例子,可以解决更多特殊的需求,地址:The Leading PDF Library for Developers | iText

 今天就介绍到这里,后续还会推出一些比较实用的干货,请大家持续关注csdn官网博客和源代码社区公众号。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147656.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Linux系统基本命令_linux常用基本命令

    Linux系统基本命令_linux常用基本命令本文主要介绍Linux中常用的基本命令,简单实用,以供大家参考,如有错误,欢迎大家指出。下面开始介绍。一、查看哪个用户登录的系统1、users命令2、whoami命令或者whoami命令二、查看哪些用户在系统上工作1、who命令2、w命令三、查看登录Linux系统所使用的终端1、tty命令四、显示操作系统的信息1、uname命令:un…

  • 哈佛大学幸福课-笔记[通俗易懂]

    哈佛大学幸福课-笔记[通俗易懂]什么是积极心理学心理学三大势力—行为主义/精神分析学/人本主义行为主义(生理本能):人是一个行为集合,被增强奖惩驱动,研究所观察到的并能客观地加以测量的刺激和反应。精神分析学(潜意识与神经症):主要通过潜意识分析,讨论病态人的无意识,所述内容主要有人的梦、过失、焦虑、动机冲突、情绪紧张以及人格的病理表现。人本主义(正面的本质与价值):强调人的正面本质和价值,而并非集中研究人的问题行为,并强调人的成长和发展,称为自我实现。视野的关注点是无形障碍—问题之外还有更美好的事物世界上出现了越来越多的抑郁症

  • pycharm导入下载好的库_如何在pycharm导入库

    pycharm导入下载好的库_如何在pycharm导入库

  • 跟我一起写 Makefile(一)[通俗易懂]

    跟我一起写 Makefile(一)[通俗易懂]跟我一起写Makefile 陈皓概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自

  • django urls_url主要功能

    django urls_url主要功能前言为什么我们url需要命名呢?url命名的作用是什么?我们先来看一个案例案例我们先在一个Django项目中,创建2个App,前台front和后台cms,然后在各自app下创建urls.py文件

  • Matlab基本函数 length函数

    Matlab基本函数 length函数分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、length函数:

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号