PDFDocument (arcpy.mapping)

Резюме

Позволяет обрабатывать документы PDF, включая объединение и удаление страниц, поведение при открытии, добавление вложений и создание или изменение настроек безопасности документа.

Обсуждение

PDFDocumentOpen и PDFDocumentCreate являются функциями, которые обеспечивают ссылку на объект PDFDocument.

При использовании методов appendPages, insertPages или attachFile важно ввести строку, содержащую путь к файлу PDF. Если передается объект PDFDocument, метод не работает. Кроме того, необходимо, чтобы защита всех обрабатываемых документов PDF была одинакова. Например, если вы хотите соединить три документа в один многостраничный PDF, но только первый документ имеет парольную защиту, двум другим документам также необходимо задать тот же самый пароль, прежде чем использовать метод appendPages.

Метод deletePages удобен для удаления измененных страниц. Обработка большого количества страниц занимает много времени. Если были изменены всего несколько страниц, быстрее удалить их, затем добавить измененные страницы с помощью метода insertPages.

Более подробно о создании атласов см. в разделе Создание атласов с помощью ArcGIS.

Синтаксис

PDFDocument (pdf_path)
ПараметрОбъяснениеТип данных
pdf_path

Строка, задающая путь и имя выходного файла PDF при вызове метода saveAndClose.

String

Функция PDFDocumentCreate получает путь для определения местоположения записи и имени файла при создании нового файла PDF. Однако файл PDF не будет создан до выполнения последовательности шагов по вставке или присоединению шагов. PDFDocumentCreate возвращает объект PDFDocument, с которым затем будет работать скрипт. Эта функция обычно используется для создания атласа в формате PDF. При этом обычно используется экспорт некоторого числа отдельных файлов PDF из документов карт, создание нового объекта PDFDocument, присоединение содержания экспортированных файлов PDF и других документов, затем сохранение готового атласа в формате PDF.

Обратите внимание, что пустые файлы PDF создавать нельзя, также нельзя добавлять в документ пустые страницы с помощью функции PDFDocumentCreate. Чтобы метод saveAndClose мог успешно создать файл, к объекту PDFDocument необходимо добавить содержание с помощью методов appendPages или insertPages.

Более подробно о создании атласов см. в разделе Создание атласов с помощью ArcGIS.

PDFDocumentCreate, пример

Этот скрипт создает новый документ 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

Используйте способ "Прикрепить файл", чтобы присоединить любой файл к документу PDF.

deletePages (page_range)
ПараметрОбъяснениеТип данных
page_range

Строка, задающая страницы для удаления. Для удаления одной страницы в строке указывается одно значение (например, "3"). Несколько страниц можно удалить, задав их номера через запятую (например, "3, 5, 7"). Кроме того, можно задать диапазоны страниц (например, "1, 3, 5-12" ).

String

Необходимо внимательно следить за удаляемыми страницами, т.к. после каждого удаления номера страниц в документе PDF автоматически пересчитываются. Например, страница 3 станет страницей 2 сразу после удаления страницы 1 или 2. Если страницы 1 и 2 удалены, страница 3 станет страницей 1. Необходимо учитывать эти особенности, если после использования команды deletePages вы применяете команды appendPages или insertPages.

insertPages (pdf_path, {before_page_number}, {input_pdf_password})
ПараметрОбъяснениеТип данных
pdf_path

Необходимо вставить строку с указанием расположения и имени вставляемого документа PDF.

String
before_page_number

Целое число, определяющее номер страницы в ссылаемом документе PDF, перед которым необходимо вставить новую страницу или страницы. Например, если 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.

  • 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

Значение pdf_open для свойства FULL_SCREEN выводит предупреждение об открытии файла PDF в полноэкранном режиме. Другие значения pdf_open не отменяют этот параметр. Исключение составляет значение USE_NONE для параметра pdf_open.

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 compatible)
  • "AES_V2"Использует 256-битный шифр AES (Acrobat 9.0 compatible)
  • "RC4"Использует 128-битный шифр RC4 (Acrobat 5.0 compatible)

(Значение по умолчанию — RC4)

String
permissions

Строка, в которой указаны функции, ограниченные настройками безопасности документа. Аргумент права доступа может принять ряд строк с описанием всех опций, на которые распространяются ограничения. В Adobe Acrobat ограничения документа можно просмотреть, выбрав пункты Свойства документа (Document Properties) Ограничения документа (Document Restrictions) Краткое описание страницы (Summary page).

  • "ALL"Предоставляет все права доступа
  • "ALL_MASTER"Предоставляет права доступа для КОПИРОВАНИЯ, ПРАВКИ, СОСТАВЛЕНИЯ ПРИМЕЧАНИЙ и ВЫСОКОКАЧЕСТВЕННОЙ ПЕЧАТИ
  • "COPY"Предоставляет право доступа для копирования информации из текущего документа в буфер обмена
  • "DOC_ASSEMBLY"Предоставляет права доступа для вставки, удаления и вращения, а также позволяет создавать закладки и образцы
  • "EDIT"Предоставляет право доступа для редактирования документа без права добавлять или изменять примечания
  • "EDIT_NOTES"Предоставляет права доступа для добавления, изменения и удаления примечаний к тексту
  • "FILL_AND_SIGN"Предоставляет право на заполнение и подписывание существующей формы или полей сигнатур
  • "HIGH_PRINT"Предоставляет права доступа для высококачественной печати
  • "OPEN"Предоставляет право на открытие или дешифровку документа
  • "PRINT"Предоставляет право доступа для печати документа
  • "SECURE"Предоставляет право изменять настройки безопасности документа

(Значение по умолчанию — ALL)

String

Пароль для защищенного документа-PDF можно легко удалить, очистив строки свойств new_master_password и new_user_password.

Пример кода

PDFDocument, пример 1

Этот скрипт создает новый документ 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

Следующий скрипт изменяет свойства метаданных документа PDF, созданного в примере 1, и задает стиль, в котором открывается документ.

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

Следующий скрипт задает пароль user для esri, зашифровывает PDF с помощью сжатия RC4 и требует пароль при открытии документа.

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

Следующий скрипт заменяет все четыре страницы в PDF, используя методы deletePages и insertPages. Обратите внимание, как вставляется новая страница 3 перед текущей страницей 3, которая на самом деле была страницей 4 до удаления исходной страницы 3. То же самое происходит с диапазоном страниц 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
9/11/2013