创建一个复杂的PDF
Contents
[
Hide
]
Hello, World 示例展示了使用 Python 和 Aspose.PDF 创建 PDF 文档的简单步骤。在本文中,我们将看看如何使用 Aspose.PDF for Python 创建一个更复杂的文档。作为一个例子,我们将从一家运营客运渡轮服务的虚构公司获取一份文档。我们的文档将包含一张图片、两个文本片段(标题和段落)和一个表格。
如果我们从头开始创建一个文档,我们需要遵循一定的步骤:
-
实例化一个 Document 对象。在这一步中,我们将创建一个包含一些元数据但没有页面的空PDF文档。
-
向文档对象添加一个 Page。现在我们的文档将有一页。
-
向页面添加一个 Image。
-
为页眉创建一个 TextFragment。对于页眉,我们将使用Arial字体,字体大小为24pt,并居中对齐。
-
将页眉添加到页面的 paragraphs。
-
为描述创建一个 TextFragment。对于描述,我们将使用Arial字体,字体大小为24pt,并居中对齐。
-
将(描述)添加到页面段落。
-
创建一个表格,添加表格属性。
-
添加 (表格) 到页面 段落。
-
保存文档 “Complex.pdf”。
import aspose.pdf as ap
# 初始化文档对象
document = ap.Document()
# 添加页面
page = document.pages.add()
# 添加图像
page.add_image(image_file, ap.Rectangle(20, 730, 120, 830, True))
# 添加标题
header = ap.text.TextFragment("2020年秋季新的渡轮路线")
header.text_state.font = ap.text.FontRepository.find_font("Arial")
header.text_state.font_size = 24
header.horizontal_alignment = ap.HorizontalAlignment.CENTER
header.position = ap.text.Position(130, 720)
page.paragraphs.add(header)
# 添加描述
descriptionText = "游客必须在线购买门票,每天限量5000张。 \
渡轮服务正在半负荷运行,并且时间表减少。请预期排队。"
description = ap.text.TextFragment(descriptionText)
description.text_state.font = ap.text.FontRepository.find_font("Times New Roman")
description.text_state.font_size = 14
description.horizontal_alignment = ap.HorizontalAlignment.LEFT
page.paragraphs.add(description)
# 添加表格
table = ap.Table()
table.column_widths = "200"
table.border = ap.BorderInfo(ap.BorderSide.BOX, 1.0, ap.Color.dark_slate_gray)
table.default_cell_border = ap.BorderInfo(ap.BorderSide.BOX, 0.5, ap.Color.black)
table.default_cell_padding = ap.MarginInfo(4.5, 4.5, 4.5, 4.5)
table.margin.bottom = 10
table.default_cell_text_state.font = ap.text.FontRepository.find_font("Helvetica")
headerRow = table.rows.add()
headerRow.cells.add("出发城市")
headerRow.cells.add("出发岛屿")
i = 0
while i < headerRow.cells.count:
headerRow.cells[i].background_color = ap.Color.gray
headerRow.cells[i].default_cell_text_state.foreground_color = ap.Color.white_smoke
i += 1
time = timedelta(hours=6, minutes=0)
incTime = timedelta(hours=0, minutes=30)
i = 0
while i < 10:
dataRow = table.rows.add()
dataRow.cells.add(str(time))
time = time.__add__(incTime)
dataRow.cells.add(str(time))
i += 1
page.paragraphs.add(table)
document.save(output_pdf)