列表是 PDF 文档中基本的内容排布方式,其中最常用的三种列表类型是有序列表、无序列表(也称为项目符号列表)和嵌套列表。文档中的列表可以帮助文档创建者在文档中以整齐有序,且更具视觉吸引力的方式呈现信息,从而使读者更好地理解和组织这些信息。本文将介绍如何使用 Spire.PDF for Python 通过 Python 程序在 PDF 文档中创建有序列表、无序列表和嵌套列表,帮助创作更专业的 PDF 文档。
Spire.PDF for Python 中的 PdfSortedList 类和 PdfList 类可用于在 PDF 文档中生成各种类型的列表,如有序列表、无序列表和嵌套列表。通过利用 Spire.PDF for Python 提供的功能,开发人员可以轻松地为各种列表设置格式并将其添加到 PDF 页面上。以下在 PDF 文档中创建列表时会用到的关键的类和属性的说明:
类或属性 | 描述 |
PdfSortedList 类 | 表示 PDF 文档中的有序列表 |
PdfList 类 | 表示 PDF 文档中的无序列表 |
Brush 属性 | 获取或设置列表的画笔 |
Font 属性 | 获取或设置列表的字体 |
Indent 属性 | 获取或设置列表的缩进 |
TextIndent 属性 | 获取或设置标记与列表项文本之间的缩进 |
Items 属性 | 获取列表的项 |
Marker 属性 | 获取或设置列表的标记 |
Draw() 方法 | 在指定位置将列表绘制在页面的画布上 |
PdfOrderedMarker 类 | 表示有序列表的标记样式,例如数字、字母和罗马数字 |
PdfMarker 类 | 表示无序列表的项目符号样式 |
安装 Spire.PDF for Python
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.PDF for Python
使用 Python 在 PDF 中创建有序列表
开发人员可以使用 Spire.PDF for Python 中的 PdfSortedList 类来创建有序列表,并使用该类下的属性设置列表的格式。创建好列表后,可以使用 PdfSortedList.Draw() 方法将列表绘制在 PDF 页面上。以下是在 PDF 文档中创建有序列表的详细步骤:
- 创建 PdfDocument 类的对象,并使用 PdfDocument.LoadFromFile()方法加载 PDF 文档。
- 使用 PdfDocument.Pages.Add() 方法在文档中添加页面。
- 创建标题和列表的字体和画笔,并使用 PdfPageBase.Canvas.DrawString() 方法在页面上绘制列表标题。
- 创建 PdfSortedList 类的对象,以创建具有指定项的有序列表。
- 创建 PdfOrderedMarker 类的对象,为列表创建编号。
- 使用 PdfSortedList 类下的属性设置列表的字体、项缩进、文本缩进、画笔和编号。
- 使用 PdfSortedList.Draw() 方法在页面上绘制列表。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- Python
from spire.pdf import *
from spire.pdf.common import *
# 创建PdfDocument类的对象
pdf = PdfDocument()
# 向文档添加一个页面
page = pdf.Pages.Add()
# 创建标题字体和列表字体
titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, 1, True)
listFont = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True)
# 创建用于绘制列表的画刷
brush = PdfBrushes.get_Black()
# 指定初始坐标
x = 10.0
y = 20.0
# 绘制标题
title = "项目准备阶段:"
page.Canvas.DrawString(title, titleFont, brush, x, y)
# 创建一个有序列表
listItems = "确定项目目标和范围\n" \
+ "制定项目计划\n" \
+ "确定项目资源需求\n" \
+ "建立项目团队"
list = PdfSortedList(listItems)
# 创建列表项目编号
marker = PdfOrderedMarker(PdfNumberStyle.Numeric, listFont)
# 设置列表格式
list.Font = listFont
list.Indent = 2
list.TextIndent = 4
list.Brush = brush
list.Marker = marker
# 在页面上绘制列表
list.Draw(page.Canvas, x, y + float(titleFont.MeasureString(title).Height + 5))
# 保存文档
pdf.SaveToFile("output/有序列表.pdf")
pdf.Close()
在 PDF 中创建符号作为项目符号的无序列表
使用 Spire.PDF for Python 在 PDF 文档中创建无序列表需要用到 PdfList 类和该类下的属性。其中,PdfList.Marker.Style 和 PdfList.Marker.Font 属性可以对列表项目符号的风格和字体进行设置。以下是详细操作步骤:
- 创建 PdfDocument 类的对象,并使用 PdfDocument.LoadFromFile() 方法加载一个 PDF 文档。
- 使用 PdfDocument.Pages.Add() 方法向文档添加一个页面。
- 创建标题、标记和列表的字体和画刷,并使用 PdfPageBase.Canvas.DrawString() 方法在页面上绘制列表标题。
- 通过创建 PdfList 类的对象创建一个无序列表。
- 使用 PdfList 类下的属性设置列表的字体、项目缩进、文本缩进和画笔。
- 通过 PdfList.Marker.Style 属性和 PdfList.Marker.Font 属性设置项目符号的样式和字体。
- 使用 PdfList.Draw() 方法在页面上绘制列表。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- Python
from spire.pdf import *
from spire.pdf.common import *
# 创建PdfDocument类的对象
pdf = PdfDocument()
# 向文档添加页面
page = pdf.Pages.Add()
# 创建标题字体和列表字体
titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, 1, True)
listFont = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True)
markerFont = PdfTrueTypeFont("HarmonyOS Sans SC", 8.0, 0, True)
# 创建用于绘制列表的画刷
brush = PdfBrushes.get_Black()
# 指定初始坐标
x = 10.0
y = 20.0
# 绘制标题
title = "制定营销策略:"
page.Canvas.DrawString(title, titleFont, brush, x, y)
# 创建一个无序列表
listContent = "确定营销目标\n" \
+ "定义品牌定位\n" \
+ "选择合适的营销渠道\n" \
+ "制定推广计划"
list = PdfList(listContent)
# 设置列表格式
list.Font = listFont
list.Indent = 2
list.TextIndent = 4
list.Brush = brush
# 设置项目符号格式
list.Marker.Style = PdfUnorderedMarkerStyle.Asterisk
list.Marker.Font = markerFont
# 在页面上绘制列表
list.Draw(page.Canvas, x, float(y + titleFont.MeasureString(title).Height + 5))
# 保存文档
pdf.SaveToFile("output/符号项目符号列表.pdf")
pdf.Close()
在 PDF 中创建图片作为项目符号的无序列表
创建图片作为项目符号的无序列表时,需要通过 PdfList.Marker.Style 属性将项目符号样式设置为图像,然后再通过 PdfList.Marker.Image 属性设置指定图像为项目符号。以下是详细操作步骤:
- 创建 PdfDocument类的对象,并使用 PdfDocument.LoadFromFile() 方法加载一个 PDF 文档。
- 使用 PdfDocument.Pages.Add() 方法向文档添加一个页面。
- 创建标题、项目符号和列表所需的字体和画笔,并使用 PdfPageBase.Canvas.DrawString() 方法在页面上绘制列表标题。
- 通过创建 PdfList 类的实例创建一个无序列表。
- 使用 PdfList 类的属性设置列表的字体、项目缩进、文本缩进和画笔。
- 使用 PdfImage.LoadFromFile() 方法加载一张图像。
- 通过 PdfList.Marker.Style 属性将项目符号样式设置为 PdfUnorderedMarkerStyle.CustomImage,并通过 PdfList.Marker.Image 属性设置加载的图像作为项目符号。
- 使用 PdfList.Draw() 方法将列表绘制在页面上。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- Python
from spire.pdf import *
from spire.pdf.common import *
# 创建PdfDocument类的对象
pdf = PdfDocument()
# 向文档添加页面
page = pdf.Pages.Add()
# 创建标题字体和列表字体
titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, 1, True)
listFont = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True)
# 创建用于绘制列表的画刷
brush = PdfBrushes.get_Black()
# 指定初始坐标
x = 10.0
y = 20.0
# 绘制标题
title = "监测和评估:"
page.Canvas.DrawString(title, titleFont, brush, x, y)
# 创建一个无序列表
listContent = "跟踪营销活动效果\n" \
+ "分析数据和指标\n" \
+ "调整策略和计划\n" \
+ "提供报告和见解"
list = PdfList(listContent)
# 设置列表格式
list.Font = listFont
list.Indent = 2
list.TextIndent = 4
list.Brush = brush
# 加载图像
image = PdfImage.FromFile("项目符号.png")
# 将图像设置为自定义标记
list.Marker.Style = PdfUnorderedMarkerStyle.CustomImage
list.Marker.Image = image
# 在页面上绘制列表
list.Draw(page.Canvas, x, float(y + titleFont.MeasureString(title).Height + 5))
# 保存文档
pdf.SaveToFile("output/图片项目符号列表.pdf")
pdf.Close()
使用 Python 在 PDF 中创建嵌套列表
创建嵌套列表时,父列表和各级子列表都可以是无序或有序列表。各级列表创建好后,就可以使用 PdfListItem.Sublist 属性将子列表设置为父列表中相应项目的子列表,最后将列表完整地绘制在页面上。以下是创建嵌套列表的详细步骤:
- 创建 PdfDocument 类的对象,并使用 PdfDocument.LoadFromFile() 方法加载一个PDF文档。
- 使用 PdfDocument.Pages.Add() 方法向文档添加一个页面。
- 创建标题、标记符和列表所需的字体和画刷,并使用 PdfPageBase.Canvas.DrawString() 方法在页面上绘制列表标题。
- 创建一个无序列表作为父列表,并设置列表和项目符号的格式。
- 为父列表中的项目创建三个子列表,并设置列表格式。
- 使用 PdfList.Items.get_Item() 方法获取父列表中的一个项目。
- 通过 PdfListItem.SubList 属性将指定的列表设置为父列表项目的子列表。
- 使用 PdfList.Draw() 方法将列表绘制在页面上。
- 使用 PdfDocument.SaveToFile() 方法保存文档。
- Python
from spire.pdf import *
from spire.pdf.common import *
# 创建PdfDocument类的对象
pdf = PdfDocument()
# 向文档添加页面
page = pdf.Pages.Add()
# 创建标题字体、列表字体和项目符号字体
titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, 1, True)
listFont = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True)
markerFont = PdfTrueTypeFont("HarmonyOS Sans SC", 10.0, 0, True)
# 创建用于绘制标题和列表的画刷
titleBrush = PdfBrushes.get_Blue()
firstListBrush = PdfBrushes.get_Purple()
secondListBrush = PdfBrushes.get_Black()
# 指定初始坐标
x = 10.0
y = 20.0
# 绘制标题
title = "项目管理:"
page.Canvas.DrawString(title, titleFont, titleBrush, x, y)
# 创建父列表
parentListContent = "项目计划\n" + "项目执行\n" + "项目收尾"
parentList = PdfList(parentListContent)
# 设置父列表格式
indent = 4
textIndent = 4
parentList.Font = listFont
parentList.Indent = indent
parentList.TextIndent = textIndent
# 设置父列表的项目符号
parentList.Marker.Style = PdfUnorderedMarkerStyle.Square
parentList.Marker.Font = markerFont
# 创建子列表并设置其格式
subListMarker = PdfOrderedMarker(PdfNumberStyle.LowerLatin, markerFont)
subList1Content = "制定项目目标\n" \
+ "确定项目范围\n" \
+ "制定项目进度计划\n" \
+ "管理项目资源"
subList1 = PdfSortedList(subList1Content, subListMarker)
subList1.Font = listFont
subList1.Indent = indent * 2
subList1.TextIndent = textIndent
subList2Content = "分配任务和责任\n" \
+ "监督项目进展\n" \
+ "解决问题和风险\n" \
+ "与利益相关者沟通"
subList2 = PdfSortedList(subList2Content, subListMarker)
subList2.Font = listFont
subList2.Indent = indent * 2
subList2.TextIndent = textIndent
subList3Content = "完成项目交付物\n" \
+ "进行项目评估\n" \
+ "汇总项目经验教训\n" \
+ "关闭项目文件和合同"
subList3 = PdfSortedList(subList3Content, subListMarker)
subList3.Font = listFont
subList3.Indent = indent * 2
subList3.TextIndent = textIndent
# 将创建的子列表设置为父列表中项目的子列表
item1 = parentList.Items.get_Item(0)
item1.SubList = subList1
item2 = parentList.Items.get_Item(1)
item2.SubList = subList2
item3 = parentList.Items.get_Item(2)
item3.SubList = subList3
# 在页面上绘制列表
parentList.Draw(page.Canvas, x, float(y + titleFont.MeasureString(title).Height + 5))
# 保存文档
pdf.SaveToFile("output/嵌套列表.pdf")
pdf.Close()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。