`
yanxiaohui5522
  • 浏览: 59234 次
  • 来自: ...
社区版块
存档分类
最新评论

使用iText生成PDF文档点滴

    博客分类:
  • JAVA
 
阅读更多
最近做项目用到了iText工具包生成PDF文档,就使用中的技巧做个留痕。
因为用到的最多的是关于在PDF中生成表格,所以只记录了一些表格的操作。

//List中放的是需要导出的信息对象,这个可以根据自己的情况不同
public File exportPDFforPayment(List appealList)
	{
		
		Document document = new Document(PageSize.A4,10,10,10,10); //设置生成的文档的大小,以及边距
		float totalAmount = 0;
		String filepath = "c:\\test.pdf";
		try {
			PdfWriter.getInstance(document, new FileOutputStream(filepath));
			document.addSubject("Payment Infomation");//设置主题
			document.addTitle("title");//设置标题
		/*这些必须在文档打开前调用*/
			document.open();
			Table containtTable = new Table(1);//创建一个一列的表格
			containtTable.setPadding(3);
			containtTable.setWidth(100);
			containtTable.setBorderWidth(0);
			containtTable.setDefaultCellBorder(0);//设置如果某个cell没有填充值的时候边框的宽度
			
			/*这里循环list,每个对象输出一行,并且实现隔行变色*/
			for (int i=0;i<appealList.size();i++)
			{
				Cell cell = new Cell();//创建一个单元格
				if (i%2==0)
					cell.addElement(this.makeInnerTable(false,appealList.get(i)));//为单元格增加元素,这里实现的是单元格中再套一个表格
				else
					cell.addElement(this.makeInnerTable(true,appealList.get(i)));
				containtTable.addCell(cell);//表格加入该单元格
				totalAmount+=Float.parseFloat(appealList.get(i).getAmount());
			}
			
			Cell cell = new Cell(new Chunk("Total Amount:$"+totalAmount, FontFactory.getFont("Verdana,Arial", 8,Font.UNDERLINE)));//设置单元格的元素,这次是个单元格中直接加入文字
			cell.setBorderWidth(0);
			cell.setHorizontalAlignment(Cell.ALIGN_RIGHT);//设置单元格对其方式
			containtTable.addCell(cell);
			
			document.add(containtTable);//文档加入表格
			document.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return new File(filepath);
	}
	
         /*该方法实现嵌套的表格*/
	private Table makeInnerTable(boolean isodd,Appeal appeal) throws BadElementException
	{
		Font titleFont = FontFactory.getFont("Verdana,Arial", 8,Font.BOLD);
		Font contextFont = FontFactory.getFont("Verdana,Arial", 8);
		Color oddColor = new Color(215,228,219);

		Color finalColor = new Color(255,255,255);
		
		if (isodd)
			finalColor = oddColor;
		
		
		float widths[] = {15f,13f,10f,14f,12f,13f,9f,15f};//设置表格的列宽
		Table mytable = new Table(8);//一个8列的表格
		mytable.setWidths(widths);//设置表格的宽度
		mytable.setPadding(0);
		mytable.setSpacing(0);
		mytable.setWidth(97);
		mytable.setBorderWidth(1);
		mytable.setAutoFillEmptyCells(true);
		mytable.setDefaultCellBorderWidth(0);
		mytable.setBackgroundColor(finalColor);//设置背景色
		
		Cell cell1_1 = new Cell(new Chunk("Payment Number:", titleFont));
		cell1_1.setBorderWidth(0);
		cell1_1.setBackgroundColor(finalColor);
		mytable.addCell(cell1_1);
		
		Cell cell1_2 = new Cell(new Chunk(appeal.getPaymentNum(), contextFont));
		cell1_2.setBorderWidth(0);
		cell1_2.setBackgroundColor(finalColor);
		mytable.addCell(cell1_2);
		
		Cell cell1_3 = new Cell(new Chunk("Full Name:", titleFont));
		cell1_3.setBorderWidth(0);
		cell1_3.setBackgroundColor(finalColor);
		mytable.addCell(cell1_3);
		
		Cell cell1_4 = new Cell(new Chunk(appeal.getFullName(), contextFont));
		cell1_4.setBorderWidth(0);
		cell1_4.setBackgroundColor(finalColor);
		mytable.addCell(cell1_4);
		
		Cell cell1_5 = new Cell(new Chunk("Street Address:", titleFont));
		cell1_5.setBorderWidth(0);
		cell1_5.setBackgroundColor(finalColor);
		mytable.addCell(cell1_5);
		
		Cell cell1_6 = new Cell(new Chunk(appeal.getApt()+" "+appeal.getStreet(), contextFont));
		cell1_6.setBorderWidth(0);
		cell1_6.setBackgroundColor(finalColor);
		mytable.addCell(cell1_6);
		
		Cell cell1_7 = new Cell(new Chunk("Amount:", titleFont));
		cell1_7.setBorderWidth(0);
		cell1_7.setBackgroundColor(finalColor);
		mytable.addCell(cell1_7);
		
		Cell cell1_8 = new Cell(new Chunk("$"+appeal.getAmount(), contextFont));
		cell1_8.setBorderWidth(0);
		cell1_8.setBackgroundColor(finalColor);
		mytable.addCell(cell1_8);			
		
		Cell cell2_1 = new Cell(new Chunk("TMK Appealing On:", titleFont));
		cell2_1.setBorderWidth(0);
		cell2_1.setBackgroundColor(finalColor);
		mytable.addCell(cell2_1);
		
		Cell cell2_2 = new Cell(new Chunk(appeal.getTmk(), contextFont));
		cell2_2.setBorderWidth(0);
		cell2_2.setBackgroundColor(finalColor);
		mytable.addCell(cell2_2);
		
		Cell cell2_3 = new Cell(new Chunk(" ", titleFont));
		cell2_3.setBorderWidth(0);
		cell2_3.setBackgroundColor(finalColor);
		mytable.addCell(cell2_3);
		
		
		Cell cell2_4 = new Cell(new Chunk(" ", contextFont));
		cell2_4.setBorderWidth(0);
		cell2_4.setBackgroundColor(finalColor);
		mytable.addCell(cell2_4);
		
		Cell cell2_5 = new Cell(new Chunk("City:", titleFont));
		cell2_5.setBorderWidth(0);
		cell2_5.setBackgroundColor(finalColor);
		mytable.addCell(cell2_5);
		
		Cell cell2_6 = new Cell(new Chunk(appeal.getCity(), contextFont));
		cell2_6.setBorderWidth(0);
		cell2_6.setBackgroundColor(finalColor);
		mytable.addCell(cell2_6);
		
		Cell cell2_7 = new Cell(new Chunk("Submitted:", titleFont));
		cell2_7.setBorderWidth(0);
		cell2_7.setBackgroundColor(finalColor);
		mytable.addCell(cell2_7);
		
		Cell cell2_8 = new Cell(new Chunk(appeal.getSubmitTime(), contextFont));
		cell2_8.setBorderWidth(0);
		cell2_8.setBackgroundColor(finalColor);
		mytable.addCell(cell2_8);
		
		Cell cell3_1 = new Cell(new Chunk("Title:", titleFont));
		cell3_1.setBorderWidth(0);
		cell3_1.setBackgroundColor(finalColor);
		mytable.addCell(cell3_1);
		
		Cell cell3_2 = new Cell(new Chunk(appeal.getTitle(), contextFont));
		cell3_2.setBorderWidth(0);
		cell3_2.setBackgroundColor(finalColor);
		mytable.addCell(cell3_2);
		
		Cell cell3_3 = new Cell(new Chunk("Home Phone:", titleFont));
		cell3_3.setBorderWidth(0);
		cell3_3.setBackgroundColor(finalColor);
		mytable.addCell(cell3_3);
		
		Cell cell3_4 = new Cell(new Chunk(appeal.getTelephone(), contextFont));
		cell3_4.setBorderWidth(0);
		cell3_4.setBackgroundColor(finalColor);
		mytable.addCell(cell3_4);
		
		Cell cell3_5 = new Cell(new Chunk("Zip:", titleFont));
		cell3_5.setBorderWidth(0);
		cell3_5.setBackgroundColor(finalColor);
		mytable.addCell(cell3_5);
		
		Cell cell3_6 = new Cell(new Chunk(appeal.getZip(), contextFont));
		cell3_6.setBorderWidth(0);
		cell3_6.setBackgroundColor(finalColor);
		mytable.addCell(cell3_6);
		
		Cell cell3_7 = new Cell(new Chunk(" ", titleFont));
		cell3_7.setBorderWidth(0);
		cell3_7.setBackgroundColor(finalColor);
		mytable.addCell(cell3_7);
		
		Cell cell3_8 = new Cell(new Chunk(" ", contextFont));
		cell3_8.setBorderWidth(0);
		cell3_8.setBackgroundColor(finalColor);
		mytable.addCell(cell3_8);
		return mytable;
	}
分享到:
评论

相关推荐

    使用iText生成PDF.doc

    iText 是一个强大的 Java 类库,专为生成和编辑PDF文档而设计。它以其灵活性和易用性在开发社区中广受欢迎。通过iText,开发者可以轻松创建包含文本、图像、表格等各种元素的PDF文件。以下是一些关于如何使用iText...

    itext 生成pdf 目录

    iText 是一个强大的Java库,专门用于创建和修改PDF文档。在PDF文档中,目录(或书签)是用户友好的导航工具,可以帮助读者快速跳转到特定章节或页面。本篇文章将深入探讨如何使用iText来生成PDF的目录。 首先,理解...

    Android使用iText生成pdf并读取pdf内容

    在Android平台上,生成和读取PDF文件是一项常见的需求,特别是在数据导出、报告生成或文档共享等场景。iText是一个强大的开源库,它允许开发者在Java和.NET环境中创建、编辑和处理PDF文档。在这个场景中,我们将探讨...

    使用IText生成PDF和WORD文档

    document.add(new Paragraph("这是使用IText生成的PDF文档!")); document.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } } ``` 这段代码首先创建了一个`Document`对象...

    使用itext生成PDF文件

    本篇文章将详细介绍如何使用iText库生成PDF文件,以及在这个过程中可能遇到的关键知识点。 首先,我们需要了解iText的基本概念。iText是一个开源库,它提供了一系列API,使开发者能够方便地处理PDF文档。通过这个库...

    springboot使用itext生成pdf并保存到本地

    在IT行业中,生成PDF文档是常见的需求,尤其是在Web应用程序中,比如Spring Boot项目。本教程将探讨如何利用iText库在Spring Boot应用中从HTML页面生成PDF,并进行一系列的定制化操作,如添加页眉、页码、水印、目录...

    解决Itext生成PDF中文不换行的jar

    Itext是一个广泛使用的库,它允许开发者方便地创建和编辑PDF文档。然而,在处理中文文本时,可能会遇到一个问题:中文字符不换行,这会给PDF的排版带来困扰。本篇文章将详细探讨这个问题以及如何解决。 首先,我们...

    freemarker+itext生成PDF

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

    java使用itext实现pdf文件下载

    这是使用Itext生成的PDF文档。")); document.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码会在当前目录下生成一个名为"output.pdf"的PDF文件,内容为"Hello, World! 这是使用...

    itext生成PDF开发文档

    iText 是一个强大的 Java 库,用于生成和编辑 PDF 文档。在 Java 开发中,iText 提供了丰富的 API,使得开发者可以方便地在代码中创建 PDF 文件、添加文本、图像、表格、链接等元素,甚至进行数字签名和表单处理。在...

    itext 生成pdf文档

    用itext生成pdf文档,生成的内容有表格形式,文本形式,设置字体样式,文档页边距。

    itext生成pdf目录

    用itext方法生成 与Word一样的目录

    itext生成PDF图片文档

    通过使用iText,我们可以轻松地生成PDF文档,包括图片、文字、表格等多种元素。本文将详细介绍如何使用iText生成PDF图片文档。 iText基本概念 在开始之前,让我们首先了解一下iText的基本概念。iText是一个基于...

    使用itext生成pdf需要的jar包

    document.add(new Paragraph("这是使用iText生成的PDF文档内容")); document.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } } ``` 在这个示例中,我们创建了一个`...

    itext生成pdf文件-表格

    本文将深入探讨iText如何生成包含表格的PDF文件,同时结合提供的“itext教程_itext的使用方法_iava使用itext实现pdh的输出.doc”文档,为您详细解析这一过程。 首先,我们需要了解iText的基本用法。iText是用Java...

    iText生成pdf解决中文不显示

    iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...

    iText生成PDF - 实例

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

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

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

    iText生成PDF文档demo

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

    itext生成pdf并通过证书进行签章

    总结,iText库结合正确的证书和相关的jar包,为开发者提供了一种强大且灵活的方式,实现了PDF文档的生成和安全签章。通过理解这些概念和技术,你可以在项目中构建安全、可靠的PDF文档处理流程。

Global site tag (gtag.js) - Google Analytics