PDFDocument

摘要

可对 PDF 文档进行管理,包括合并和删除页面、设置文档打开方式以及创建或更改文档安全性设置。

说明

PDFDocumentOpenPDFDocumentCreate 是用于对 PDFDocument 对象进行引用的两个函数。

创建新 PDF 文件的一个常见情况是用于创建地图册。一般步骤包括创建新 PDFDocument 对象、从现有 PDF 文件追加内容以及将 PDFDocument 对象保存到磁盘。另一个最常见情形是修改现有 PDF 文件内容或属性。一旦引用了 PDFDocument,可执行 appendPagesinsertPagesdeletePages,还可使用 updateDocPropertiesupdateDocSecurity 方法修改 PDF 文件设置。

在仅替换发生更改的页面时,deletePages 方法会十分有用。处理大量页面会耗费很长时间。如果更改的页面相对较少,那么仅删除这些页面,然后再使用 insertPages 方法插入刚刚更新的页面会比较省时。

目前,使用 Python 设置文档的 PDF 安全性时,将限定为 RC4 加密。如果在 ArcGIS Pro 中设置 PDF 安全性,则将限定为 AES 256-bit 加密。这意味着如果您使用 Python 管理 PDF 文档,则将被限定为只能处理不具安全性或仅使用 RC4 加密的 PDF 文档。

属性

属性说明数据类型
pageCount
(只读)

返回一个整型,该整型表示 PDF 文档的总页数。

Long

方法概述

方法说明
appendPages (pdf_path, {input_pdf_password})

将一个 PDF 文档附加在另一文档结尾。

deletePages (page_range)

可用于删除现有 PDF 文档内的一个或多个页面。

insertPages (pdf_path, {before_page_number}, {input_pdf_password})

可将一个 PDF 文档的内容插入到另一 PDF 文档开头处或页面之间。

saveAndClose ()

保存对当前参考的 PDFDocument 所做的任何更改。

updateDocProperties ({pdf_title}, {pdf_author}, {pdf_subject}, {pdf_keywords}, {pdf_open_view}, {pdf_layout})

允许您更新 PDF 文档元数据并且还可以设置某些行为,当在 Adobe Reader 或 Adobe Acrobat 中打开文档时这些行为将触发如初始视图模式和页面缩略图视图等模式。

updateDocSecurity (new_master_password, {new_user_password}, {encryption})

提供用于对 PDF 文件设置密码、加密和安全性限制的机制。

方法

appendPages (pdf_path, {input_pdf_password})
参数说明数据类型
pdf_path

包含要附加的输入 PDF 文档位置和名称的字符串。

String
input_pdf_password

用于定义受保护文件的主密码的字符串。必须为主密码;用户密码将不起作用。

(默认值为 None)

String

附加受保护的 PDF 文档(即每一个文档都有不同的安全性设置)时,输出设置将取决于要附加页面的主文档。例如,如果被附加的文档未保存密码信息,但是附加的页面保存了密码信息,则生成的文档没有保存的密码信息。

要将页面添加到当前 PDF 的开头处,请使用 insertPages

deletePages (page_range)
参数说明数据类型
page_range

用于定义要删除的一个或多个页面的字符串。通过将单个值以字符串的形式进行传递,删除单个页面(例如,"3")。可在每个值之间使用逗号来删除多个页面(例如,"3, 5, 7")。还可以应用范围(例如,"1, 3, 5-12")。

String

因为每次删除页面后,内置的 PDF 页码会自动调整,所以跟踪删除的页面十分重要。例如,把第 1 页或第 2 页删除后,第 3 页将立即成为第 2 页。如果删除第 1 页和第 2 页,则第 3 页将成为第 1 页。在使用 deletePages 后立即使用 insertPages 和一个 before_page_number 值时,您需要考虑这个问题。

insertPages (pdf_path, {before_page_number}, {input_pdf_password})
参数说明数据类型
pdf_path

包含要插入的输入 PDF 文档位置和名称的字符串。

String
before_page_number

用于在当前引用的 PDFDocument 中定义将在其前面插入新页面的页码的整数。例如,如果 before_page_value 为 1,则插入的页面将在所有页面的前面插入。

(默认值为 1)

Integer
input_pdf_password

用于定义受保护文件的主密码的字符串。必须为主密码;用户密码将不起作用。

(默认值为 None)

String

插入具有不同安全性设置的受保护 PDF 文档时,输出设置将取决于要插入页面的主文档。例如,如果被插入的页面未保存密码信息,但是插入的页面保存了密码信息,则生成的文档没有保存的密码信息。

要将页面添加到当前 PDF 的结尾处,请使用 appendPages

saveAndClose ()

saveAndClose 方法必须用于要保留的更改。如果在执行 saveAndClose 前就已存在脚本,则不会保存更改。如果使用 PDFDocumentCreate 创建新文件,那么在运行 saveAndClose 之前磁盘中不会存在该文件。

updateDocProperties ({pdf_title}, {pdf_author}, {pdf_subject}, {pdf_keywords}, {pdf_open_view}, {pdf_layout})
参数说明数据类型
pdf_title

用于定义文档标题(PDF 元数据属性)的字符串。

(默认值为 None)

String
pdf_author

用于定义文档创作者(PDF 元数据属性)的字符串。

(默认值为 None)

String
pdf_subject

用于定义文档主题(PDF 元数据属性)的字符串。

(默认值为 None)

String
pdf_keywords

用于定义文档关键字(PDF 元数据属性)的字符串。

(默认值为 None)

String
pdf_open_view

用于定义查看 PDF 文件时要触发的行为的字符串或数字。默认值为 USETHUMBS,即在打开 PDF 时自动显示 Adobe Reader“页面”面板。

  • VIEWER_DEFAULT打开文件时,使用应用程序用户首选项
  • USE_NONE仅显示文档;不显示其他面板
  • USE_THUMBS显示文档和“页面”面板
  • USE_BOOKMARKS显示文档和“书签”面板
  • FULL_SCREEN以全屏查看模式显示文档
  • LAYERS显示文档和“图层”面板
  • ATTACHMENT显示文档和“附件”面板

(默认值为 USE_THUMBS)

String
pdf_layout

用于定义查看 PDF 文件时要触发的初始视图模式的字符串或数字。

  • DONT_CARE打开文件时,使用应用程序用户首选项
  • SINGLE_PAGE使用单页模式
  • ONE_COLUMN使用单列连续模式
  • TWO_COLUMN_LEFT使用双列连续模式,且首页在左
  • TWO_COLUMN_RIGHT使用双列连续模式,且首页在右
  • TWO_PAGE_LEFT使用双页模式,且首页在左
  • TWO_PAGE_RIGHT使用双页模式,且首页在右

(默认值为 SINGLE_PAGE)

String

FULL_SCREENpdf_open 设置将在打开 PDF 文档时提示关于全屏模式的警告。将 pdf_open 设置为其他选项不会清除此设置,除非将 pdf_open 设置为 USE_NONE

updateDocSecurity (new_master_password, {new_user_password}, {encryption})
参数说明数据类型
new_master_password

用于定义主文档密码的字符串。向受保护 PDF 附加和插入页面时需要此密码。

String
new_user_password

用于定义打开 PDF 文档进行查看时所需的用户密码的字符串。

(默认值为 None)

String
encryption

用于定义 PDF 中使用的加密方法的字符串。这是支持的唯一加密类型。

  • "RC4"使用 128 位 RC4 加密(Acrobat 5.0 兼容)

(默认值为 RC4)

String

可通过将 new_master_password 和 new_user_password 属性设置为空字符串,移除受保护 PDF 文档的密码。

代码示例

PDFDocument 示例 1

此脚本将创建新 PDF 文档、追加三个独立 PDF 文档的内容并保存生成的 PDF 文件。

import arcpy, os

#Set file name and remove if it already exists
pdfPath = r"C:\Projects\YosemiteNP\AttractionsMapBook.pdf"
if os.path.exists(pdfPath):
    os.remove(pdfPath)

#Create the file and append pages
pdfDoc = arcpy.mp.PDFDocumentCreate(pdfPath)
pdfDoc.appendPages(r"C:\Projects\YosemiteNP\Title.pdf")
pdfDoc.appendPages(r"C:\Projects\YosemiteNP\MapPages.pdf")
pdfDoc.appendPages(r"C:\Projects\YosemiteNP\ContactInfo.pdf")

#Commit changes and delete variable reference
pdfDoc.saveAndClose()
del pdfDoc
PDFDocument 示例 2

以下脚本修改 PDF 文档元数据属性并且设置文档以何种样式打开。

import arcpy
pdfDoc = arcpy.mp.PDFDocumentOpen(r"C:\Projects\YosemiteNP\AttractionsMapBook.pdf")
pdfDoc.updateDocProperties(pdf_title="Yosemite Main Attrations Map Book",
                           pdf_author="Esri",
                           pdf_subject="Main Attractions Map Book",
                           pdf_keywords="Yosemite; Map Books; Attractions",
                           pdf_open_view="USE_THUMBS",
                           pdf_layout="SINGLE_PAGE")
pdfDoc.saveAndClose()
del pdfDoc
PDFDocument 示例 3

以下脚本将设置 user_passwordmaster_password,使用 RC4 压缩方法对 PDF 进行加密并且在打开文档时需要提供密码。确保已阅读上述类描述中的受保护 PDF 限制。

import arcpy
pdfDoc = arcpy.mp.PDFDocumentOpen(r"C:\Projects\YosemiteNP\AttractionsMapBook.pdf")
pdfDoc.updateDocSecurity("master", "user", "RC4")
pdfDoc.saveAndClose()
del pdfDoc
PDFDocument 示例 4

以下脚本将使用 deletePages 然后使用 insertPages 替换现有 PDF 中的四页内容。请注意在当前显示的第 3 页的页面前插入新第 3 页的方法,在最初的第 3 页移除之前,现在的第 3 页其实是第 4 页。在 5-7 页中同样应用了该方法。确保已阅读上述类描述中的受保护 PDF 限制。

import arcpy
pdfDoc = arcpy.mp.PDFDocumentOpen(r"C:\Projects\YosemiteNP\AttractionsMapBook.pdf", "master")
pdfDoc.deletePages("3, 5-7")
pdfDoc.insertPages(r"C:\Projects\Yosemite\NewPage3.pdf", 3, "master")
pdfDoc.insertPages(r"C:\Projects\Yosemite\NewPages5-7.pdf", 5, "master")
pdfDoc.saveAndClose()
del pdfDoc