PDFDocument (arcpy.mapping)
Краткая информация
Позволяет обрабатывать документы PDF, включая объединение и удаление страниц, поведение при открытии, добавление вложений и создание или изменение настроек безопасности документа.
Обсуждение
PDFDocumentOpen и PDFDocumentCreate являются функциями, которые обеспечивают ссылку на объект PDFDocument.
При использовании методов appendPages, insertPages или attachFile важно ввести строку, содержащую путь к файлу PDF. Если передается объект PDFDocument, метод не работает. Кроме того, необходимо, чтобы защита всех обрабатываемых документов PDF была одинакова. Например, если вы хотите соединить три документа в один многостраничный PDF, но только первый документ имеет парольную защиту, двум другим документам также необходимо задать тот же самый пароль, прежде чем использовать метод appendPages.
Метод deletePages удобен для удаления измененных страниц. Обработка большого количества страниц занимает много времени. Если были изменены всего несколько страниц, быстрее удалить их, затем добавить измененные страницы с помощью метода insertPages.
Более подробно о создании атласов см. в разделе Создание атласов с помощью ArcGIS.
Синтаксис
Параметр | Объяснение | Тип данных |
pdf_path |
Строка, задающая путь и имя выходного файла PDF при вызове метода saveAndClose. | String |
Функция PDFDocumentCreate получает путь для определения местоположения записи и имени файла при создании нового файла PDF. Однако файл PDF не будет создан до выполнения последовательности шагов по вставке или присоединению шагов. PDFDocumentCreate возвращает объект PDFDocument, с которым затем будет работать скрипт. Эта функция обычно используется для создания атласа в формате PDF. При этом обычно используется экспорт некоторого числа отдельных файлов PDF из документов карт, создание нового объекта PDFDocument, присоединение содержания экспортированных файлов PDF и других документов, затем сохранение готового атласа в формате PDF.
Обратите внимание, что пустые файлы PDF создавать нельзя, также нельзя добавлять в документ пустые страницы с помощью функции PDFDocumentCreate. Чтобы метод saveAndClose мог успешно создать файл, к объекту PDFDocument необходимо добавить содержание с помощью методов appendPages или insertPages.
Более подробно о создании атласов см. в разделе Создание атласов с помощью ArcGIS.
Этот скрипт создает новый документ 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. |
Методы
Параметр | Объяснение | Тип данных |
pdf_path |
Необходимо вставить строку с указанием расположения и имени присоединяемого документа PDF. | String |
input_pdf_password |
Строка, определяющая главный пароль для защищенного файла (Значение по умолчанию — None) | String |
При присоединении документов PDF с различными настройками безопасности настройки выходного документа будут основаны на настройках главного документа, к которому будет присоединены страницы. Например, если документ, к которому будут присоединены страницы, не имеет защитного пароля, а присоединяемые страницы имеют, полученный документ не будет иметь защитного пароля.
Параметр | Объяснение | Тип данных |
file_path |
Строка с указанием расположения и имени файла, присоединяемого к документу PDF. | String |
description |
Для описания вложения используется дополнительная строка. Пользователь увидит эту строку при просмотре вложения в обозревателе файлов PDF. | String |
Используйте способ "Прикрепить файл", чтобы присоединить любой файл к документу PDF.
Параметр | Объяснение | Тип данных |
page_range |
Строка, задающая страницы для удаления. Для удаления одной страницы в строке указывается одно значение (например, "3"). Несколько страниц можно удалить, задав их номера через запятую (например, "3, 5, 7"). Кроме того, можно задать диапазоны страниц (например, "1, 3, 5-12" ). | String |
Необходимо внимательно следить за удаляемыми страницами, т.к. после каждого удаления номера страниц в документе PDF автоматически пересчитываются. Например, страница 3 станет страницей 2 сразу после удаления страницы 1 или 2. Если страницы 1 и 2 удалены, страница 3 станет страницей 1. Необходимо учитывать эти особенности, если после использования команды deletePages вы применяете команды appendPages или insertPages.
Параметр | Объяснение | Тип данных |
pdf_path |
Необходимо вставить строку с указанием расположения и имени вставляемого документа PDF. | String |
before_page_number |
Целое число, определяющее номер страницы в ссылаемом документе PDF, перед которым необходимо вставить новую страницу или страницы. Например, если before_page_value равно 1, вставляемая страница будет находиться перед всеми страницами. (Значение по умолчанию — 1) | String |
input_pdf_password |
Строка, определяющая главный пароль для защищенного файла. (Значение по умолчанию — None) | String |
Для добавления страницы в конец текущего документа PDF используйте appendPages.
При использовании документов PDF с различными настройками безопасности настройки выходного документа будут основаны на настройках главного документа, в который будут вставляться страницы. Например, если документ, в который будут вставляться страницы, не имеет защитного пароля, а вставляемые страницы имеют, полученный документ не будет иметь защитного пароля.
Метод saveAndClose следует использовать для сохраняемых изменений. Если скрипт завершает работу до исполнения saveAndClose, изменения не сохраняются.
Параметр | Объяснение | Тип данных |
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.
(Значение по умолчанию — USE_THUMBS) | String |
pdf_layout |
Строка или число, которые определяют изначальный режим просмотра при открытии файла PDF.
(Значение по умолчанию — SINGLE_PAGE) | String |
Значение pdf_open для свойства FULL_SCREEN выводит предупреждение об открытии файла PDF в полноэкранном режиме. Другие значения pdf_open не отменяют этот параметр. Исключение составляет значение USE_NONE для параметра pdf_open.
Параметр | Объяснение | Тип данных |
new_master_password |
Строка, определяющая главный пароль документа. Пароль требуется, чтобы получить право добавлять и вставлять страницы в защищенный документ PDF. | String |
new_user_password |
Строка, определяющая пароль пользователя, при помощи которого можно открыть документ PDF для просмотра. (Значение по умолчанию — None) | String |
encryption |
Строка, определяющая метод шифрования, используемый в документе PDF.
(Значение по умолчанию — RC4) | String |
permissions |
Строка, в которой указаны функции, ограниченные настройками безопасности документа. Аргумент права доступа может принять ряд строк с описанием всех опций, на которые распространяются ограничения. В Adobe Acrobat ограничения документа можно просмотреть, выбрав пункты Свойства документа (Document Properties) Ограничения документа (Document Restrictions) Краткое описание страницы (Summary page).
(Значение по умолчанию — ALL) | String |
Пароль для защищенного документа-PDF можно легко удалить, очистив строки свойств new_master_password и new_user_password.
Пример кода
Этот скрипт создает новый документ 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
Следующий скрипт изменяет свойства метаданных документа 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
Следующий скрипт задает пароль 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
Следующие страницы будут присоединены к последней странице многостраничного документа. Для такого редактирования защищенного документа PDF необходим мастер-пароль.
import arcpy
pdfDoc = arcpy.mapping.PDFDocumentOpen(r"C:\Project\ParcelAtlasMapBook.pdf", "master")
pdfDoc.appendPages(r"C:\Project\ContactInfo.pdf")
pdfDoc.saveAndClose()
del pdfDoc
Следующий скрипт заменяет все четыре страницы в 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