列表是一种很好的组织信息的方式,与大段的文字西相比,列表能够更清楚明了地展示出重要信息。PDF 中有两种不同列表:有序列表和无序列表,这两种列表还可以同时应用在嵌套列表中。本文将介绍如何使用 Spire.PDF for Java 提供的类和方法在 PDF 文档中创建各种形式的列表。
在 Spire.PDF for Java 中,PdfSortedList 类和 PdfUnorderedList 类分别代表有序列表和无序列表,其中包含设置列表的内容、缩进、字体、样式以及其他属性的方法。下表列出了创建列表所需的一些核心类和方法。
类或方法 | 说明 |
PdfSortedList 类 | 代表PDF文档中的有序列表。 |
PdfUnorderedList 类 | 代表PDF文档中的无序列表。 |
PdfListBase.setBrush() 方法 | 设置列表画笔。 |
PdfListBase.setFont() 方法 | 设置列表字体。 |
PdfListBase.sertIndent() 方法 | 设置列表缩进。 |
PdfListBase.setTextIndent() 方法 | 设置项目标记和项目之间的缩进。 |
PdfListBase.getItems() 方法 | 获取列表的项目。 |
PdfListBase.setMarker() 方法 | 设置列表的项目标记。 |
PdfListBase.draw() 方法 | 将列表绘制在页面的指定位置 |
PdfOrderedMarker 类 | 代表有序列表的项目标记,如数字、字母、罗马数字。 |
PdfMarker 类 | 代表无序列表的项目符号样式。 |
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>11.2.3</version>
</dependency>
</dependencies>
在 PDF 文档中创建有序列表
有序列表按一定顺序排列一系列项目,每个项目前都有一个数字、字母或罗马数字作为项目标记。以下是使用 Spire.PDF for Java 在 PDF 文档中创建有序列表的详细操作步骤:
- 创建一个 PdfDocument 类的对象。
- 用 PdfDocument.getPages().add() 方法添加一个页面。
- 创建 PdfBrush 和 PdfFont 类的对象。
- 创建一个 PdfOrderedMarker 类的对象,并将标记样式指定为 Lower_Latin。
- 用字符串指定列表的内容,并根据字符串创建一个 PdfSortedList 类的对象。
- 用 PdfSortedList 对象下的方法设置列表的字体、缩进、画笔和标记。
- 用 PdfSortedList.draw() 方法在页面上的指定位置绘制列表。
- 用 PdfDocument.saveToFile() 方法保存文档。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfNumberStyle;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import com.spire.pdf.lists.PdfOrderedMarker;
import com.spire.pdf.lists.PdfSortedList;
import java.awt.*;
public class createOrderedList {
public static void main(String[] args) {
//创建PdfDocument类的对象
PdfDocument doc = new PdfDocument();
//设置页边距
PdfMargins margins = new PdfMargins(30);
//添加一个页面
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margins);
//创建画笔
PdfBrush brush = PdfBrushes.getBlack();
//创建字体
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("黑体", Font.BOLD,14));
PdfTrueTypeFont listFont = new PdfTrueTypeFont(new Font("黑体", Font.BOLD,12));
//创建有序列表的项目标记
PdfOrderedMarker marker = new PdfOrderedMarker(PdfNumberStyle.Lower_Latin, listFont);
//指定初始坐标
float x = 10;
float y = 20;
//绘制标题
String title = "Web开发必备技能";
page.getCanvas().drawString(title, titleFont, brush, x, y);
y = y + (float) titleFont.measureString(title).getHeight();
y = y + 5;
//创建有序列表
String listContent = "命令行Unix\n"
+ "Vim\n"
+ "HTML\n"
+ "CSS\n"
+ "Python\n"
+ "JavaScript\n"
+ "SQL";
PdfSortedList list = new PdfSortedList(listContent);
//设置列表的字体、列表缩进、文本缩进、画笔及项目标记
list.setFont(listFont);
list.setIndent(2);
list.setTextIndent(4);
list.setBrush(brush);
list.setMarker(marker);
//将列表绘制在页面上的指定位置
list.draw(page, x, y);
//保存文档
doc.saveToFile("有序列表.pdf");
}
}
在 PDF 文档中创建项目符号列表
无序列表也叫项目符号列表,包含没有特别顺序的相关项目,列表的每个项目前都有一个项目符号。以下是使用 Spire.PDF for Java 在 PDF 文档中创建无序列表的详细操作步骤:
- 创建一个 PdfDocument 类的对象。
- 用 PdfDocument.getPages().add() 方法添加一个页面。
- 创建 PdfBrush 和 PdfFont 类的对象。
- 创建一个 PdfMarker 类的对象,并指定项目标记的样式。
- 用字符串指定列表的内容,并根据字符串创建一个 PdfUnorderedList 类的对象。
- 用 PdfUnorderedList 对象下的方法设置列表的字体、缩进、画笔和项目标记。
- 用 PdfUnorderedList.draw() 方法在页面上的指定位置绘制列表。
- 用 PdfDocument.saveToFile() 方法保存文档。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import com.spire.pdf.lists.PdfMarker;
import com.spire.pdf.lists.PdfUnorderedList;
import com.spire.pdf.lists.PdfUnorderedMarkerStyle;
import java.awt.*;
public class createUnorderedList {
public static void main(String[] args) {
//创建PdfDocument类的对象
PdfDocument doc = new PdfDocument();
//设置页边距
PdfMargins margin = new PdfMargins(30);
//添加一个页面
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);
//创建字体
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("黑体", Font.BOLD,14));
PdfTrueTypeFont listFont = new PdfTrueTypeFont(new Font("黑体", Font.PLAIN,12));
PdfTrueTypeFont markerFont = new PdfTrueTypeFont(new Font("黑体", Font.PLAIN,8));
//创建画笔
PdfBrush brush = PdfBrushes.getBlack();
//指定初始坐标
float x = 10;
float y = 20;
//绘制标题
String title = "计算机科学科目";
page.getCanvas().drawString(title, titleFont, brush, x, y);
y = y + (float)titleFont.measureString(title).getHeight();
y = y + 5;
//设置项目标记样式
PdfMarker marker = new PdfMarker(PdfUnorderedMarkerStyle.Asterisk);
marker.setFont(markerFont);
//创建无序列表
String listContent = "数据结构\n"
+ "算法\n"
+ "计算机科学\n"
+ "操作系统\n"
+ "计算理论\n"
+ "C语言编程\n"
+"计算机组织和结构";
PdfUnorderedList list = new PdfUnorderedList(listContent);
//设置列表字体、列表缩进、文本缩进、画笔和项目标记
list.setFont(listFont);
list.setIndent(2);
list.setTextIndent(4);
list.setBrush(brush);
list.setMarker(marker);
//将列表绘制在页面的指定位置
list.draw(page, x, y);
//保存文档
doc.saveToFile("项目符号列表.pdf");
}
}
在 PDF 文档中创建图片项目符号列表
除了普通符号之外,还可以用图片作为无序列表的项目符号。创建图片项目符号无序列表的操作步骤如下:
- 创建一个 PdfDocument 类的对象。
- 用 PdfDocument.getPages().add() 方法添加一个页面。
- 创建 PdfBrush 和 PdfFont 类的对象。
- 创建一个 PdfMarker 类的对象,设置标记样式为 Custom_Image。
- 用 PdfMarker.setImage() 方法将图像设置为项目符号。
- 用字符串指定列表的内容,并根据字符串创建一个 PdfUnorderedList 类的对象。
- 用 PdfUnorderedList 对象下的方法设置列表的字体、缩进、画笔和项目标记。
- 用 PdfUnorderedList.draw() 方法在页面上的指定位置绘制列表。
- 用 PdfDocument.saveToFile() 方法保存文档。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import com.spire.pdf.lists.PdfMarker;
import com.spire.pdf.lists.PdfUnorderedList;
import com.spire.pdf.lists.PdfUnorderedMarkerStyle;
import java.awt.*;
public class customizeBulletPointsWithImage {
public static void main(String[] args) {
//创建PdfDocument类的对象
PdfDocument doc = new PdfDocument();
//设置页边距
PdfMargins margin = new PdfMargins(30);
//添加一个页面
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);
//创建字体
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("黑体", Font.BOLD, 14));
PdfTrueTypeFont listFont = new PdfTrueTypeFont(new Font("黑体", Font.PLAIN, 12));
//创建画笔
PdfBrush brush = PdfBrushes.getBlack();
//指定初始坐标
float x = 10;
float y = 20;
//绘制标题
String title = "项目待办事项";
page.getCanvas().drawString(title, titleFont, brush, x, y);
y = y + (float)titleFont.measureString(title).getHeight();
y = y + 5;
//将项目标记样式指定为图片
PdfMarker marker = new PdfMarker(PdfUnorderedMarkerStyle.Custom_Image);
//将图片设置为项目标记
marker.setImage(PdfImage.fromFile("核查标志.png"));
//順序なしリストを作成する
String listContent = "确定你正在进行的项目或任务。\n"
+ "分配任务。\n"
+ "确定任务的优先次序。\n"
+ "跟踪任务的进展状况。\n"
+ "任务完成后,将其标记为已完成。";
PdfUnorderedList list = new PdfUnorderedList(listContent);
//设置列表字体、列表缩进、文本缩进、画笔和项目标记
list.setFont(listFont);
list.setIndent(2);
list.setTextIndent(4);
list.setBrush(brush);
list.setMarker(marker);
//将列表绘制在页面上的指定位置
list.draw(page, x, y);
//保存文档
doc.saveToFile("图片项目符号列表.pdf");
}
}
在 PDF 文档中创建嵌套列表
嵌套列表是包含至少1个子列表的多级列表,用于显示数据的层次结构。以下是使用 Spire.PDF for Java 在 PDF 文档中创建嵌套列表的操作步骤:
- 创建一个 PdfDocument 类的对象。
- 用 PdfDocument.getPages().add() 方法添加一个页面。
- 创建一个 PdfOrderedMarker 类的对象,指定标记样式为 Numeric。
- 用字符串指定列表内容,并根据该字符串创建一个主列表。然后使用 PdfSortedList 对象下的方法设置列表的字体、缩进、画笔和项目标记。
- 重复上述步骤,创建子列表和二级子列表。
- 用 PdfSortedList.getItems().get() 方法获取主列表的指定项目,并使用 PdfListItem.setSublist() 方法向其添加子列表。
- 用 PdfSortedList.draw() 方法在页面上的指定位置绘制列表。
- 用 PdfDocument.saveToFile() 方法保存文档。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfNumberStyle;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import com.spire.pdf.lists.PdfListItem;
import com.spire.pdf.lists.PdfOrderedMarker;
import com.spire.pdf.lists.PdfSortedList;
import java.awt.*;
public class createMultiLevelList {
public static void main(String[] args) {
//创建PdfDocument类的对象
PdfDocument doc = new PdfDocument();
//设置页边距
PdfMargins margin = new PdfMargins(30);
//添加一个页面
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);
//指定初始坐标
float x = 10;
float y = 20;
//创建画笔
PdfBrush blackBrush = PdfBrushes.getBlack();
PdfBrush purpleBrush = PdfBrushes.getPurple();
//创建字体
PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("黑体", Font.BOLD, 14));
PdfTrueTypeFont listFont = new PdfTrueTypeFont(new Font("黑体", Font.PLAIN, 12));
//创建有序列表的项目标记
PdfOrderedMarker marker = new PdfOrderedMarker(PdfNumberStyle.Numeric, listFont);
//绘制标题
String title = "以下是一个嵌套列表。";
page.getCanvas().drawString(title, titleFont, blackBrush, x, y);
y = y + (float)titleFont.measureString(title).getHeight();
y = y + 5;
//创建主列表
String parentListContent = "项目 1\n"
+ "项目 2";
PdfSortedList parentList = new PdfSortedList(parentListContent);
parentList.setFont(listFont);
parentList.setIndent(2);
parentList.setBrush(purpleBrush);
parentList.setMarker(marker);
//创建一个名为“subList_1”的子列表
String subListContent_1 = "子项目 1\n"
+ "子项目 2\n"
+ "子项目 3\n"
+ "子项目 4";
PdfSortedList subList_1 = new PdfSortedList(subListContent_1);
subList_1.setIndent(12);
subList_1.setFont(listFont);
subList_1.setBrush(blackBrush);
subList_1.setMarker(marker);
subList_1.setMarkerHierarchy(true);
//创建一个名为“subList_2”的子列表
String subListContent_2 = "子项目 1\n"
+ "子项目 2\n"
+ "子项目 3";
PdfSortedList subList_2 = new PdfSortedList(subListContent_2);
subList_2.setIndent(12);
subList_2.setFont(listFont);
subList_2.setBrush(blackBrush);
subList_2.setMarker(marker);
subList_2.setMarkerHierarchy(true);
//创建一个名为“subList_2”的二级子列表
String subSubListContent_1 = "二级子项目 1\n"
+ "二级子项目 2";
PdfSortedList subSubList = new PdfSortedList(subSubListContent_1);
subSubList.setIndent(20);
subSubList.setFont(listFont);
subSubList.setBrush(blackBrush);
subSubList.setMarker(marker);
subSubList.setMarkerHierarchy(true);
//设置“subList_1”为主列表中第一个项目的子列表
PdfListItem item_1 = parentList.getItems().get(0);
item_1.setSubList(subList_1);
//设置“subList_2”为主列表中第二个项目的子列表
PdfListItem item_2 = parentList.getItems().get(1);
item_2.setSubList(subList_2);
//设置“subSubList”为“subList_1”中第一个项目的子列表
PdfListItem item_1_1 = subList_1.getItems().get(0);
item_1_1.setSubList(subSubList);
//绘制主列表
parentList.draw(page, x, y);
//保存文档
doc.saveToFile("多级列表.pdf");
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。