最近做项目用到了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 是一个强大的 Java 类库,专为生成和编辑PDF文档而设计。它以其灵活性和易用性在开发社区中广受欢迎。通过iText,开发者可以轻松创建包含文本、图像、表格等各种元素的PDF文件。以下是一些关于如何使用iText...
iText 是一个强大的Java库,专门用于创建和修改PDF文档。在PDF文档中,目录(或书签)是用户友好的导航工具,可以帮助读者快速跳转到特定章节或页面。本篇文章将深入探讨如何使用iText来生成PDF的目录。 首先,理解...
在Android平台上,生成和读取PDF文件是一项常见的需求,特别是在数据导出、报告生成或文档共享等场景。iText是一个强大的开源库,它允许开发者在Java和.NET环境中创建、编辑和处理PDF文档。在这个场景中,我们将探讨...
document.add(new Paragraph("这是使用IText生成的PDF文档!")); document.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } } ``` 这段代码首先创建了一个`Document`对象...
本篇文章将详细介绍如何使用iText库生成PDF文件,以及在这个过程中可能遇到的关键知识点。 首先,我们需要了解iText的基本概念。iText是一个开源库,它提供了一系列API,使开发者能够方便地处理PDF文档。通过这个库...
在IT行业中,生成PDF文档是常见的需求,尤其是在Web应用程序中,比如Spring Boot项目。本教程将探讨如何利用iText库在Spring Boot应用中从HTML页面生成PDF,并进行一系列的定制化操作,如添加页眉、页码、水印、目录...
Itext是一个广泛使用的库,它允许开发者方便地创建和编辑PDF文档。然而,在处理中文文本时,可能会遇到一个问题:中文字符不换行,这会给PDF的排版带来困扰。本篇文章将详细探讨这个问题以及如何解决。 首先,我们...
这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...
这是使用Itext生成的PDF文档。")); document.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码会在当前目录下生成一个名为"output.pdf"的PDF文件,内容为"Hello, World! 这是使用...
iText 是一个强大的 Java 库,用于生成和编辑 PDF 文档。在 Java 开发中,iText 提供了丰富的 API,使得开发者可以方便地在代码中创建 PDF 文件、添加文本、图像、表格、链接等元素,甚至进行数字签名和表单处理。在...
用itext生成pdf文档,生成的内容有表格形式,文本形式,设置字体样式,文档页边距。
用itext方法生成 与Word一样的目录
通过使用iText,我们可以轻松地生成PDF文档,包括图片、文字、表格等多种元素。本文将详细介绍如何使用iText生成PDF图片文档。 iText基本概念 在开始之前,让我们首先了解一下iText的基本概念。iText是一个基于...
document.add(new Paragraph("这是使用iText生成的PDF文档内容")); document.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } } ``` 在这个示例中,我们创建了一个`...
本文将深入探讨iText如何生成包含表格的PDF文件,同时结合提供的“itext教程_itext的使用方法_iava使用itext实现pdh的输出.doc”文档,为您详细解析这一过程。 首先,我们需要了解iText的基本用法。iText是用Java...
iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...
在本篇中,我们将深入探讨如何使用iText库来生成PDF文件,以及相关的源码和工具应用。 首先,我们需要引入iText库的相关依赖。在提供的文件列表中,可以看到`itextpdf-5.1.1.jar`和`itextasian.jar`这两个文件。`...
对于初学者来说,掌握使用iText生成PDF文档中的表格、一维条形码和图片是一项基本技能。此外,需要注重代码中字符串的准确性,避免由于扫描或输入错误导致的问题。熟练掌握iText库的使用,可以使开发者在处理PDF文件...
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,...
总结,iText库结合正确的证书和相关的jar包,为开发者提供了一种强大且灵活的方式,实现了PDF文档的生成和安全签章。通过理解这些概念和技术,你可以在项目中构建安全、可靠的PDF文档处理流程。