列表是 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 命令将它们轻松安装到 vs code 中。
pip install spire.pdf
如果您不确定如何安装,请参考此教程:如何在 vs code 中安装 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 天的临时许可证。