使用 Python 获取和设置页面属性
Aspose.PDF for Python via .NET 允许您在 Python 应用程序中读取和设置 PDF 文件中页面的属性。本节展示了如何获取 PDF 文件的页数,获取有关 PDF 页面属性(例如颜色)的信息,并设置页面属性。给出的示例是用 Python 编写的。
获取 PDF 文件中的页数
在处理文档时,您通常想知道它们包含多少页。使用 Aspose.PDF,这不需要超过两行代码。
要获取 PDF 文件中的页数:
- 使用 Document 类打开 PDF 文件。
- 然后使用 PageCollection 集合的 Count 属性(来自 Document 对象)来获取文档中的总页数。
以下代码片段展示了如何获取 PDF 文件的页数。
import aspose.pdf as ap
# 打开文档
document = ap.Document(input_pdf)
# 获取页数
print("页数:", str(len(document.pages)))
获取页面数量而不保存文档
有时我们会动态生成PDF文件,在创建PDF文件时,可能会遇到获取PDF文件页面数量的需求(例如创建目录等),而不在系统或流上保存文件。为了满足这一需求,Document类中引入了一个方法process_paragraphs()。请看下面的代码片段,展示了在不保存文档的情况下获取页面数量的步骤。
import aspose.pdf as ap
# 实例化Document实例
document = ap.Document()
# 向PDF文件的页面集合中添加页面
page = document.pages.add()
# 创建循环实例
for i in range(0, 300):
# 向页面对象的段落集合中添加TextFragment
page.paragraphs.add(ap.text.TextFragment("页面数量测试"))
# 处理PDF文件中的段落以获取准确的页面数量
document.process_paragraphs()
# 打印文档中的页面数量
print("文档中的页面数量 =", str(len(document.pages)))
获取页面属性
PDF 文件中的每个页面都有许多属性,例如宽度、高度、出血框、裁剪框和切割框。Aspose.PDF 允许您访问这些属性。
理解页面属性:Artbox、BleedBox、CropBox、MediaBox、TrimBox 和 Rect 属性之间的区别
- 媒体框:媒体框是最大的页面框。它对应于打印为 PostScript 或 PDF 时选择的页面大小(例如 A4、A5、美国信纸等)。换句话说,媒体框确定了显示或打印 PDF 文档的媒介的物理大小。
- 出血框:如果文档有出血,PDF 也会有一个出血框。 出血是指超出页面边缘的颜色(或艺术作品)的量。它用于确保当文档被打印和裁剪到尺寸(“修边”)时,油墨将一直延伸到页面的边缘。即使页面被误裁——稍微偏离修边标记切割——页面上也不会出现白色边缘。
- 修边框: 修边框表示文档在打印和修边后的最终尺寸。
- 艺术框: 艺术框是在文档页面的实际内容周围绘制的框。当在其他应用程序中导入PDF文档时,使用此页面框。
- 裁剪框: 裁剪框是您的PDF文档在Adobe Acrobat中显示的“页面”尺寸。在正常视图中,Adobe Acrobat中仅显示裁剪框的内容。 有关这些属性的详细描述,请阅读Adobe.Pdf规范,特别是10.10.1页面边界。
- Page.Rect: MediaBox和DropBox的交集(通常为可见矩形)。 下图说明了这些属性。
有关更多详细信息,请访问此页面。
访问页面属性
Page类提供了与特定PDF页面相关的所有属性。PDF文件的所有页面都包含在Document对象的PageCollection集合中。
从那里,可以使用它们的索引访问单个Page对象,或者使用foreach循环遍历集合以获取所有页面。一旦访问了单个页面,我们就可以获取其属性。以下代码片段展示了如何获取页面属性。
import aspose.pdf as ap
# 打开文件
document = ap.Document(input_pdf)
# 获取特定页面
page = document.pages[1]
# 获取页面属性
print(
"ArtBox : 高度={},宽度={},LLX={},LLY={},URX={},URY={}".format(
page.art_box.height,
page.art_box.width,
page.art_box.llx,
page.art_box.lly,
page.art_box.urx,
page.art_box.ury,
)
)
print(
"BleedBox : 高度={},宽度={},LLX={},LLY={},URX={},URY={}".format(
page.bleed_box.height,
page.bleed_box.width,
page.bleed_box.llx,
page.bleed_box.lly,
page.bleed_box.urx,
page.bleed_box.ury,
)
)
print(
"CropBox : 高度={},宽度={},LLX={},LLY={},URX={},URY={}".format(
page.crop_box.height,
page.crop_box.width,
page.crop_box.llx,
page.crop_box.lly,
page.crop_box.urx,
page.crop_box.ury,
)
)
print(
"MediaBox : 高度={},宽度={},LLX={},LLY={},URX={},URY={}".format(
page.media_box.height,
page.media_box.width,
page.media_box.llx,
page.media_box.lly,
page.media_box.urx,
page.media_box.ury,
)
)
print(
"TrimBox : 高度={},宽度={},LLX={},LLY={},URX={},URY={}".format(
page.trim_box.height,
page.trim_box.width,
page.trim_box.llx,
page.trim_box.lly,
page.trim_box.urx,
page.trim_box.ury,
)
)
print(
"Rect : 高度={},宽度={},LLX={},LLY={},URX={},URY={}".format(
page.rect.height,
page.rect.width,
page.rect.llx,
page.rect.lly,
page.rect.urx,
page.rect.ury,
)
)
print("页面编号 :", page.number)
print("旋转 :", page.rotate)
获取 PDF 文件的特定页面
Aspose.PDF for Python 允许您将 PDF 拆分为单独的页面并将其另存为 PDF 文件。在 PDF 文件中获取指定页面并将其另存为新的 PDF 是一个非常类似的操作:打开源文档,访问页面,创建一个新文档并将页面添加到该文档中。
Document 对象的 PageCollection 包含 PDF 文件中的页面。要从此集合中获取特定页面:
以下代码片段演示了如何从 PDF 文件中获取特定页面并将其另存为新文件。
import aspose.pdf as ap
# 打开文档
document = ap.Document(input_pdf)
# 获取特定页面
page = document.pages[2]
# 将页面保存为PDF文件
new_document = ap.Document()
new_document.pages.add(page)
new_document.save(output_pdf)
确定页面颜色
Page 类提供了与PDF文档中特定页面相关的属性,包括页面使用的颜色类型 - RGB、黑白、灰度或未定义。
PDF文件的所有页面都包含在 PageCollection 集合中。 The color_type 属性指定页面元素的颜色。要获取或确定特定 PDF 页面的颜色信息,请使用 Page 对象的 color_type 属性。
以下代码片段展示了如何遍历 PDF 文件的各个页面以获取颜色信息。
import aspose.pdf as ap
# 打开源 PDF 文件
document = ap.Document(input_pdf)
# 遍历 PDF 文件的所有页面
for page_n in range(0, len(document.pages)):
page_number = page_n + 1
# 获取特定 PDF 页面的颜色类型信息
page_color_type = document.pages[page_number].color_type
if page_color_type == ap.ColorType.BLACK_AND_WHITE:
print("Page # " + str(page_number) + " is Black and white.")
if page_color_type == ap.ColorType.GRAYSCALE:
print("Page # " + str(page_number) + " is Gray Scale.")
if page_color_type == ap.ColorType.RGB:
print("Page # " + str(page_number) + " is RGB.")
if page_color_type == ap.ColorType.UNDEFINED:
print("Page # " + str(page_number) + " Color is undefined.")