ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

PDFDocument

  • 描述
  • 讨论
  • 语法
  • 属性
  • 方法概述
  • 方法
  • 代码示例

描述

可对 PDF 文档进行操作,包括合并页面、删除页面、设置文档打开方式、添加文件附件以及创建或更改文档安全性设置。

讨论

PDFDocumentOpen 和 PDFDocumentCreate 是用于对 PDFDocument 对象进行引用的两个函数。

使用 appendPages、insertPages 或 attachFile 方法时,需要传递一个表示现有 PDF 文件路径的字符串。如果传递了 PDFDocument 对象,则该方法将失效。同时,所有要追加、插入或附加的文档必须具有相同的 PDF 安全性。例如,如果要将三个文档追加到一个多页面 PDF 中,并且仅第一个文档具有密码保护,那么在使用 appendPages 之前,必须同样为其余两个文档设置该密码。

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

有关如何创建地图册的详细说明,请参阅使用 ArcGIS 构建地图册帮助主题。

语法

 PDFDocument (pdf_path)
参数说明数据类型
pdf_path

调用 saveAndClose 方法时,用于指定生成的 PDF 文件的路径和文件名的字符串。

String

PDFDocumentCreate 函数接收路径以确定新创建的 PDF 文件的保存位置和文件名。尽管如此,如果不对 PDF 文件执行插入或追加页面以及保存等后续操作,仍不能生成 PDF 文件。PDFDocumentCreate 将返回脚本应执行和保存的 PDFDocument 对象。使用此函数的常见情况是创建 PDF 地图册。这些步骤通常包括从地图文档导出一定数量的独立 PDF 文件、创建新的 PDFDocument 对象、从已导出的 PDF 文件和其他文档追加内容以及保存最终的 PDF 地图册。

请注意,既不可能创建空白 PDF 文件,PDFDocumentCreate 函数也不可能将任何空白页添加到文档内容中。要使 saveAndClose 方法能够成功创建文件,必须使用 appendPages 或 insertPages 方法将内容添加到 PDFDocument 对象中。

有关如何创建地图册的详细说明,请参阅使用 ArcGIS 构建地图册帮助主题。

PDFDocumentCreate 示例

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

import arcpy, os
#Set file name and remove if it already exists
pdfPath = r"C:\Project\ParcelAtlasMapBook.pdf"
if os.path.exists(pdfPath):
    os.remove(pdfPath)
#Create the file and append pages
pdfDoc = arcpy.mapping.PDFDocumentCreate(pdfPath)
pdfDoc.appendPages(r"C:\Project\Title.pdf")
pdfDoc.appendPages(r"C:\Project\ParcelAtlas.pdf")
pdfDoc.appendPages(r"C:\Project\ContactInfo.pdf")
#Commit changes and delete variable reference
pdfDoc.saveAndClose()
del pdfDoc

属性

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

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

Long

方法概述

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

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

attachFile (file_path, {description})

将文件附加到现有 PDF 文档(当在 PDF 查看器应用程序中打开 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}, {permissions})

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

方法

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

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

String
input_pdf_password

用于定义受保护文件的主密码的字符串

(默认值为 None)

String

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

attachFile (file_path, {description})
参数说明数据类型
file_path

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

String
description

要用作附件描述的可选字符串。在 PDF 查看器应用程序中查看附件时,用户将看到此字符串。

String

可以使用 attachFile 方法将任何类型的文件附加到 PDF 文档。

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

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

String

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

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

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

Integer
before_page_number

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

(默认值为 1)

String
input_pdf_password

用于定义受保护文件的主密码的字符串。

(默认值为 None)

String

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

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

saveAndClose ()

saveAndClose 方法必须用于要保留的更改。如果在执行 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_SCREEN 的 pdf_open 设置将在打开 PDF 文档时提示您关于全屏模式的警告。将 pdf_open 设置为其他选项不会清除此设置,除非将 pdf_open 设置为 USE_NONE。

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

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

String
new_user_password

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

(默认值为 None)

String
encryption

用于定义 PDF 中使用的加密方法的字符串。

  • "AES_V1" —使用 128 位 AES 加密(Acrobat 7.0 兼容)
  • "AES_V2" —使用 256 位 AES 加密(Acrobat 9.0 兼容)
  • "RC4" —使用 128 位 RC4 加密(Acrobat 5.0 兼容)

(默认值为 RC4)

String
permissions

用于定义受文档安全性设置限制的功能的字符串。权限参数可以接受用于描述要限制的所有选项的字符串列表。可以在 Adobe Acrobat 的文档属性文档限制摘要页面中查看文档限制。

  • "ALL" —授予所有权限
  • "ALL_MASTER" —授予 COPY、EDIT、EDIT_NOTES 和 HIGH_PRINT 权限
  • "COPY" —授予将信息从文档复制到剪贴板的权限
  • "DOC_ASSEMBLY" —授予执行页面插入、删除和旋转以及允许创建书签和缩略图的权限
  • "EDIT" —授予以添加或修改文本注释以外的方式编辑文档的权限
  • "EDIT_NOTES" —授予添加、修改和删除文本注释的权限
  • "FILL_AND_SIGN" —授予填写或签署现有表单或签名字段的权限
  • "HIGH_PRINT" —授予高质量打印的权限
  • "OPEN" —授予打开或解密文档的权限
  • "PRINT" —授予打印文档的权限
  • "SECURE" —授予更改文档安全性设置的权限

(默认值为 ALL)

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:\Project\ParcelAtlasMapBook.pdf"
if os.path.exists(pdfPath):
    os.remove(pdfPath)

#Create the file and append pages
pdfDoc = arcpy.mapping.PDFDocumentCreate(pdfPath)
pdfDoc.appendPages(r"C:\Project\Title.pdf")
pdfDoc.appendPages(r"C:\Project\ParcelAtlas.pdf")

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

以下脚本修改了示例 1 中所创建的 PDF 文档的元数据属性,并对文档的打开样式进行了设置。

import arcpy
pdfDoc = arcpy.mapping.PDFDocumentOpen(r"C:\Project\ParcelAtlasMapBook.pdf")
pdfDoc.updateDocProperties(pdf_title="Atlas Map",
                           pdf_author="Author",
                           pdf_subject="Map Book",
                           pdf_keywords="Atlas; Map Books",
                           pdf_open_view="USE_THUMBS",
                           pdf_layout="SINGLE_PAGE")
pdfDoc.saveAndClose()
del pdfDoc
PDFDocument 示例 3

以下脚本将用户密码设置为 esri,使用 RC4 压缩方法对 PDF 进行加密并且在打开文档时需要提供密码。

import arcpy
pdfDoc = arcpy.mapping.PDFDocumentOpen(r"C:\Project\ParcelAtlasMapBook.pdf")
pdfDoc.updateDocSecurity("master", "user", "RC4", "OPEN")
pdfDoc.saveAndClose()
del pdfDoc
PDFDocument 示例 4

以下脚本将在现有多页文档的结尾追加最后一页内容。对受保护的 PDF 文档进行这种更改时需要提供主密码。

import arcpy
pdfDoc = arcpy.mapping.PDFDocumentOpen(r"C:\Project\ParcelAtlasMapBook.pdf", "master")
pdfDoc.appendPages(r"C:\Project\ContactInfo.pdf")
pdfDoc.saveAndClose()
del pdfDoc
PDFDocument 示例 5

以下脚本将使用 deletePages 然后使用 insertPages 替换现有 PDF 中的四页内容。请注意在现在显示为第 3 页的页面前插入新第 3 页的方法,在最初的第 3 页移除之前,现在的第 3 页其实是第 4 页。在 5-7 页中同样应用了该方法。

import arcpy
pdfDoc = arcpy.mapping.PDFDocumentOpen(r"C:\Project\ParcelAtlasMapBook.pdf", "master")
pdfDoc.deletePages("3, 5-7")
pdfDoc.insertPages(r"C:\Project\NewPage3.pdf", 3, "master")
pdfDoc.insertPages(r"C:\Project\NewPages5-7.pdf", 5, "master")
pdfDoc.saveAndClose()
del pdfDoc

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明