Сводка
Позволяет управлять документами PDF, включая объединение и удаление страниц, поведение при открытии, добавление вложений и создание или изменение настроек безопасности документа.
Описание
PDFDocumentOpen и PDFDocumentCreate являются двумя функциями, которые обеспечивают ссылку на объект PDFDocument.
Один из стандартных сценариев создания новых файлов PDF предназначен для создания атласов. Как правило, необходимо создать новый объект PDFDocument, присоединить к нему содержание других PDF-файлов и сохранить объект PDFDocument на диск. Другим стандартным сценарием является изменение содержания существующего файла PDF или его свойств. После того, как вы получили ссылку на PDFDocument, вы можете выполнить методы appendPages, insertPages или deletePages, а также использовать методы updateDocProperties и updateDocSecurity для изменения настроек PDF-файла.
Метод deletePages удобен для выгрузки только тех страниц, которые должны быть изменены. Обработка большого количества страниц занимает много времени. Если были изменены всего несколько страниц, быстрее удалить их, затем добавить измененные страницы с помощью метода insertPages.
В настоящий момент при использовании Python для настройки безопасности PDF документа, она ограничена шифрованием RC4. Если вы настраиваете безопасность PDF в ArcGIS Pro, она ограничена шифрованием AES 256-bit. Это значит, что, если вы управляете документами PDF, используя Python, вы ограничены работой только с теми документами PDF, которые не защищены, либо документами с шифрованием RC4.
Свойства
Владение | Объяснение | Тип данных |
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})
Parameter | Объяснение | Тип данных |
pdf_path | Необходимо вставить строку с указанием расположения и имени присоединяемого документа PDF. | String |
input_pdf_password | Строка, определяющая главный пароль для защищенного файла. Это должен быть главный пароль: пользовательский пароль не подойдет. (Значение по умолчанию — None) | String |
При присоединении документов PDF с различными настройками безопасности настройки выходного документа будут основаны на настройках главного документа, к которому будет присоединены страницы. Например, если документ, к которому будут присоединены страницы, не имеет защитного пароля, а присоединяемые страницы имеют, полученный документ не будет иметь защитного пароля.
Для добавления страницы в начало текущего документа PDF используйте insertPages.
deletePages (page_range)
Parameter | Объяснение | Тип данных |
page_range | Строка, задающая страницы для удаления. Для удаления одной страницы в строке указывается одно значение (например, "3"). Несколько страниц можно удалить, задав их номера через запятую (например, "3, 5, 7"). Кроме того, можно задать диапазоны страниц (например, "1, 3, 5-12" ). | String |
Необходимо внимательно следить за удаляемыми страницами, т.к. после каждого удаления номера страниц в документе PDF автоматически пересчитываются. Например, страница 3 станет страницей 2 сразу после удаления страницы 1 или 2. Если страницы 1 и 2 удалены, страница 3 станет страницей 1. Необходимо учитывать эти особенности, если при использовании команды deletePages вы сразу же следом применяете команду insertPages вместе со значением before_page_number.
insertPages (pdf_path, {before_page_number}, {input_pdf_password})
Parameter | Объяснение | Тип данных |
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})
Parameter | Объяснение | Тип данных |
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 не отменяют эту настройку, исключением является случай, когда значением pdf_open является USE_NONE.
updateDocSecurity (new_master_password, {new_user_password}, {encryption})
Parameter | Объяснение | Тип данных |
new_master_password | Строка, определяющая главный пароль документа. Пароль требуется, чтобы получить право добавлять и вставлять страницы в защищенный документ PDF. | String |
new_user_password | Строка, определяющая пароль пользователя, при помощи которого можно открыть документ PDF для просмотра. (Значение по умолчанию — None) | String |
encryption | Строка, определяющая метод шифрования, используемый в документе PDF. Это единственный поддерживаемый тип шифрования.
(Значение по умолчанию — RC4) | String |
Пароль для защищенного документа-PDF можно легко удалить, очистив строки свойств new_master_password и new_user_password.
Пример кода
Этот скрипт создает новый документ 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
Следующий скрипт изменяет свойства метаданных документа 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
Следующий скрипт задает пароли user_password и master_password, зашифровывает PDF с помощью сжатия RC4 и требует пароль при открытии документа. Ознакомьтесь с ограничениями защищенного PDF в описание класса выше.
import arcpy
pdfDoc = arcpy.mp.PDFDocumentOpen(r"C:\Projects\YosemiteNP\AttractionsMapBook.pdf")
pdfDoc.updateDocSecurity("master", "user", "RC4", "OPEN")
pdfDoc.saveAndClose()
del pdfDoc
Следующий скрипт заменяет все четыре страницы в существующем PDF, используя методы deletePages и затем insertPages. Обратите внимание, как была вставлена новая страница 3 перед текущей страницей 3, которая на самом деле была страницей 4 до удаления исходной страницы 3. То же самое происходит с диапазоном страниц 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