随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。
在上一篇文章使用itextpdf生成表格基本用法中,介绍了生成表格的基本步骤和一些常用设置,同样的,在某些需求下,我们需要在pdf中展示列表,体现条理性,itextpdf同样支持,这个开源库支持很多种列表风格来满足大家需求,由于列表的每项风格基本一致,所以使用起来也非常简单,这里介绍几个常用的
1、有序列表
/**
* 添加有序列表
*
* @throws IOException
* @throws DocumentException
*/
public static void createOrderedListPdf() throws IOException, DocumentException {
Document document = new Document();
// 创建PdfWriter对象
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
// 打开文档
document.open();
// 添加有序列表
List orderedList = new List(List.ORDERED);
orderedList.add(new ListItem("Item 1"));
orderedList.add(new ListItem("Item 2"));
orderedList.add(new ListItem("Item 3"));
document.add(orderedList);
// low level
PdfContentByte cb = writer.getDirectContent();
cb.fill();
cb.sanityCheck();
// 关闭文档
document.close();
}
这个List是itext包下面的,表示一个列表,不是java常用的那个List,代码非常简单,就不作多的解释了,附上效果图:
2、无序列表
/**
* 添加无序列表
*
* @throws IOException
* @throws DocumentException
*/
public static void createUnorderedListPdf() throws IOException, DocumentException {
Document document = new Document();
// 创建PdfWriter对象
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
// 打开文档
document.open();
// 添加无序列表
List unorderedList = new List(List.UNORDERED);
unorderedList.add(new ListItem("Item 1"));
unorderedList.add(new ListItem("Item 2"));
unorderedList.add(new ListItem("Item 3"));
document.add(unorderedList);
// low level
PdfContentByte cb = writer.getDirectContent();
cb.fill();
cb.sanityCheck();
// 关闭文档
document.close();
}
3、罗马数字列表(RomanList)
/**
* 添加罗马数字列表
*
* @throws IOException
* @throws DocumentException
*/
public static void createRomanListPdf() throws IOException, DocumentException {
Document document = new Document();
// 创建PdfWriter对象
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
// 打开文档
document.open();
// 添加roman列表
RomanList romanList = new RomanList();
romanList.add(new ListItem("Item 1"));
romanList.add(new ListItem("Item 2"));
romanList.add(new ListItem("Item 3"));
document.add(romanList);
// low level
PdfContentByte cb = writer.getDirectContent();
cb.fill();
cb.sanityCheck();
// 关闭文档
document.close();
}
4、希腊字母列表(GreekList)
/**
* 添加希腊字母列表
*
* @throws IOException
* @throws DocumentException
*/
public static void createGreekListPdf() throws IOException, DocumentException {
Document document = new Document();
// 创建PdfWriter对象
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
// 打开文档
document.open();
// Add Greek list
GreekList greekList = new GreekList();
greekList.add(new ListItem("Item 1"));
greekList.add(new ListItem("Item 2"));
greekList.add(new ListItem("Item 3"));
document.add(greekList);
// low level
PdfContentByte cb = writer.getDirectContent();
cb.fill();
cb.sanityCheck();
// 关闭文档
document.close();
}
5、ZapfDingbats列表
/**
* 创建ZapfDingbats列表
*
* @throws IOException
* @throws DocumentException
*/
public static void createZapfDingbatsListPdf() throws IOException, DocumentException {
Document document = new Document();
// 创建PdfWriter对象
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
// 打开文档
document.open();
// ZapfDingbatsList List Example
ZapfDingbatsList zapfDingbatsList = new ZapfDingbatsList(43, 30);
zapfDingbatsList.add(new ListItem("Item 1"));
zapfDingbatsList.add(new ListItem("Item 2"));
zapfDingbatsList.add(new ListItem("Item 3"));
document.add(zapfDingbatsList);
// low level
PdfContentByte cb = writer.getDirectContent();
cb.fill();
cb.sanityCheck();
// 关闭文档
document.close();
}
6、列表嵌套
/**
* 创建嵌套列表
*
* @throws IOException
* @throws DocumentException
*/
public static void createNestedListPdf() throws IOException, DocumentException {
Document document = new Document();
// 创建PdfWriter对象
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(DEST));
// 打开文档
document.open();
// List and Sublist Examples
List nestedList = new List(List.UNORDERED);
nestedList.add(new ListItem("Item 1"));
// 子列表
List sublist = new List(true, false, 30);
sublist.setListSymbol(new Chunk("", FontFactory.getFont(FontFactory.HELVETICA, 6)));
sublist.add("A");
sublist.add("B");
nestedList.add(sublist);
nestedList.add(new ListItem("Item 2"));
// 子列表
sublist = new List(true, false, 30);
sublist.setListSymbol(new Chunk("", FontFactory.getFont(FontFactory.HELVETICA, 6)));
sublist.add("C");
sublist.add("D");
nestedList.add(sublist);
document.add(nestedList);
// low level
PdfContentByte cb = writer.getDirectContent();
cb.fill();
cb.sanityCheck();
// 关闭文档
document.close();
}
上面列举的都是比较常用的列表,在一般项目已经够使用了 ,更多扩展功能请参考itextpdf官网API。