Как работать с PDF-файлами в Python для начинающих программистов
Опубликовано 6 июня 2022 г.
Python — это интуитивно понятный инструмент программирования, который предлагает широкий спектр функций, помогающих разработчикам писать и редактировать код. При программировании на Python вы можете использовать различные библиотеки и функции для настройки PDF-файлов, таких как водяные знаки и выделение разделов документа. Изучение этих методов модификации может помочь вам персонализировать файлы в соответствии с вашими конкретными потребностями и требованиями.
В этой статье мы обсудим девять способов использования PDF-файлов в Python, которые помогут вам улучшить свои навыки программирования для вашей карьеры.
Как работать с PDF-файлами в Python
Вот девять уникальных способов работы с файлами PDF в Python:
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
1. Извлеките и добавьте текст
Чтобы извлечь текст из Python, установите PDFMiner, выполнив команду «pip install pdfminer.six». После установки библиотеки вы можете добавлять и извлекать текст из PDF. Вот пример, показывающий синтаксис для извлечения текста из PDF в Python с использованием этой библиотеки:
из io импортировать StringIO
из pdfminer.pdfinterp импортировать PDFPageInterpreter, PDFResourceManager
из pdfminer.pdfpage импортировать PDFPage
из pdfminer.converter импортировать TextConverter
из pdfminer.layout импортировать LAParams
# Анализаторы PDFMiner
rsrcmgr = PDFResourceManager()
сио = StringIO()
кодек = “utf-8”
Лапарамс = LAParams ()
устройство = TextConverter (rsrcmgr, sio, кодек = кодек, laparams = laparams)
интерпретатор = PDFPageInterpreter (rsrcmgr, устройство)
# путь к нашему входному файлу
pdf_file = “образец.pdf”
# Извлечь текст
pdfFile = открыть (pdf_file, “rb”)
для страницы в PDFPage.get_pages(pdfFile):
интерпретатор.process_page(страница)
fp.close()
# Возвращаем текст из StringIO
текст = sio.getvalue ()
печать (текст)
# Освобождение
устройство.закрыть()
sio.close()
Вот пример синтаксиса для добавления текста в файл PDF:
из reportlab.lib.pagesizes импортировать ПИСЬМО
из reportlab.lib.units импортировать дюймы
из reportlab.pdfgen.canvas импорт холста
из reportlab.lib.colors импортировать красный
# создание pdf-файла
холст = Холст(“text_file.pdf”, размер страницы=БУКВА)
# установка шрифта и размера шрифта
canvas.setFont(“Курьер”, 16)
# устанавливаем цвет шрифта как красный
canvas.setFillColor(красный)
# записываем этот текст в файл PDF
canvas.drawString(2 * дюйм, 8 * дюйм, «Это недавно созданный PDF-файл Python».)
холст.сохранить()
2. Поворот страниц
Страницы в PDF могут быть как в альбомной, так и в портретной ориентации. Иногда страницы могут быть перевернуты, что может произойти, когда кто-то сканирует документ в PDF или в электронную почту. Чтобы повернуть страницы PDF, установите библиотеку PyPDF2, введя команду «pip install pypdf2». Вот пример синтаксиса, показывающий, как правильно поворачивать страницы с помощью этой библиотеки:
# rotate_pages.py
из PyPDF2 импортировать PdfFileReader, PdfFileWriter
определение rotate_pages (pdf_path):
pdf_writer = PdfFileWriter()
pdf_reader = PdfFileReader (pdf_path)
# Повернуть страницу на 90 градусов вправо
page_1 = pdf_reader.getPage(0).rotateClockwise(90)
pdf_writer.addPage (страница_1)
# Повернуть страницу на 90 градусов влево
page_2 = pdf_reader.getPage(1).rotateCounterClockwise(90)
pdf_writer.addPage (страница_2)
# Добавляем страницу в нормальной ориентации
pdf_writer.addPage(pdf_reader.getPage(2))
с open(‘rotate_pages.pdf’, ‘wb’) как fh:
pdf_writer.write(fh)
если __name__ == ‘__main__’:
path = ‘Jupyter_Notebook_An_Introduction.pdf’
rotate_pages (путь)
3. Объединяйте PDF-файлы
Существуют различные обстоятельства, когда вы можете захотеть объединить несколько PDF-файлов в один PDF-файл. Например, вы можете объединить стандартную титульную страницу с различными отчетами в формате PDF. Python позволяет выполнить эту задачу с помощью функции «merge_pdfs()». Вот пример синтаксиса этой функции:
# pdf_merging.py
из PyPDF2 импортировать PdfFileReader, PdfFileWriter
def merge_pdfs (пути, вывод):
pdf_writer = PdfFileWriter()
для пути в путях:
pdf_reader = PdfFileReader (путь)
для страницы в диапазоне (pdf_reader.getNumPages()):
# Добавляем каждую страницу в объект записи
pdf_writer.addPage(pdf_reader.getPage(страница))
# Записать объединенный PDF
с открытым (выход, ‘wb’) как выход:
pdf_writer.write(выходит)
если __name__ == ‘__main__’:
пути = [‘document1.pdf’, ‘document2.pdf’]
merge_pdfs (пути, вывод = ‘merged.pdf’)
4. Разделить PDF-файлы
Вместо объединения PDF-файлов вы можете разделить один документ на несколько PDF-файлов. Это действие полезно, когда вы хотите создавать различные PDF-файлы для обмена значительным объемом информации или контента. Вот пример синтаксиса, показывающий, как разделить файлы PDF с помощью библиотеки PyPDF2:
# pdf_splitting.py
из PyPDF2 импортировать PdfFileReader, PdfFileWriter
def split (путь, name_of_split):
pdf = PdfFileReader (путь)
для страницы в диапазоне (pdf.getNumPages()):
pdf_writer = PdfFileWriter()
pdf_writer.addPage(pdf.getPage(страница))
вывод = f'{name_of_split}{страница}.pdf’
с открытым (выход, ‘wb’) как output_pdf:
pdf_writer.write(output_pdf)
если __name__ == ‘__main__’:
path = ‘Jupyter_Notebook_An_Introduction.pdf’
разделить (путь, ‘jupyter_page’)
5. Добавьте водяные знаки
Водяные знаки — это шаблоны и изображения, которые вы добавляете на страницы документа, чтобы сделать их узнаваемыми. Вы можете добавить водяные знаки с помощью функции «create_watermark». Эта функция принимает три аргумента, в том числе «input_pdf» для пути к файлу, который вы хотите пометить водяным знаком, «output» для пути, по которому вы хотите сохранить версию PDF с водяным знаком, а также само изображение или текст водяного знака. Вот пример синтаксиса:
# pdf_watermarker.py
из PyPDF2 импортировать PdfFileWriter, PdfFileReader
def create_watermark (ввод_pdf, вывод, водяной знак):
watermark_obj = PdfFileReader (водяной знак)
водяной знак_страница = водяной знак_obj.getPage (0)
pdf_reader = PdfFileReader (input_pdf)
pdf_writer = PdfFileWriter()
# Водяной знак на всех страницах
для страницы в диапазоне (pdf_reader.getNumPages()):
страница = pdf_reader.getPage (страница)
page.mergePage (водяной знак_страница)
pdf_writer.addPage(страница)
с открытым (выход, ‘wb’) как выход:
pdf_writer.write(выходит)
если __name__ == ‘__main__’:
создать_водяной знак (
input_pdf=’Jupyter_Notebook_An_Introduction.pdf’,
вывод = ‘watermarked_notebook.pdf’,
водяной знак=’водяной знак.pdf’)
6. Зашифруйте PDF
Используя библиотеку PyPDF2, вы можете зашифровать файл PDF с помощью пароля. Хотя вы не можете установить разрешения для документа, вы можете добавить пароль владельца и предоставить себе права администратора для всего PDF-файла. Вот пример синтаксиса с использованием функций «add_encryption» и «.encrypt()»:
# pdf_encrypt.py
из PyPDF2 импортировать PdfFileWriter, PdfFileReader
def add_encryption (input_pdf, output_pdf, пароль):
pdf_writer = PdfFileWriter()
pdf_reader = PdfFileReader (input_pdf)
для страницы в диапазоне (pdf_reader.getNumPages()):
pdf_writer.addPage(pdf_reader.getPage(страница))
pdf_writer.encrypt (user_pwd = пароль, owner_pwd = нет,
use_128bit = Истина)
с открытым (output_pdf, ‘wb’) как fh:
pdf_writer.write(fh)
если __name__ == ‘__main__’:
add_encryption(input_pdf=’reportlab-sample.pdf’,
output_pdf=’reportlab-encrypted.pdf’,
пароль=’две рыбы’
7. Извлеките и добавьте изображения
Вы можете извлекать изображения из файла PDF с помощью библиотек PyMuPDF и Fitz. Вы можете установить эти библиотеки, введя «pip install pymupdf» и «pip install fitz» в командной строке. Вот пример синтаксиса, показывающий, как извлекать изображения:
# ПиМуПДФ
импортировать фитц
импорт io
из изображения импорта PIL
# путь к нашему входному файлу
pdf_file = “образец.pdf”
# Входной файл PDF
pdf_file = fitz.open(pdf_file)
для page_no в диапазоне (len (pdf_file)):
curr_page = pdf_файл[page_no]
изображения = curr_page.getImageList()
для image_no, изображение в перечислении (curr_page.getImageList()):
# получить XREF изображения
внешняя ссылка = изображение[0]
# извлечь байты изображения
curr_image = pdf_file.extractImage(внешняя ссылка)
img_bytes = текущее_изображение[“image”]
# получить расширение изображения
img_extension = текущее_изображение[“ext”]
# загрузить его в PIL
изображение = Image.open(io.BytesIO(img_bytes))
# сохраняем на локальный диск
image.save(open(f”page{page_no+1}_img{image_no}. {img_extension}”, “wb”))
Вот пример синтаксиса для добавления изображения в PDF:
из reportlab.lib.pagesizes импортировать ПИСЬМО
из reportlab.pdfgen.canvas импорт холста
холст = Холст(“add_image.pdf”, размер страницы=БУКВА)
canvas.drawInlineImage(“x.jpeg”, 100, 450)
холст.сохранить()
8. Извлеките URL-адреса
Если вы хотите извлечь URL-адреса из файла PDF, Python предлагает библиотеку pdfx, которую вы можете использовать для выполнения этой задачи. Установите модуль pdfx, введя команду «pip install pdfx». После установки библиотеки вы готовы выполнить извлечение. Вот пример синтаксиса, показывающий, как извлекать URL-адреса:
импортировать pdfx
# чтение файла PDF
pdf = pdfx.PDFx(“образец.pdf”)
# получить список URL-адресов
печать (pdf.get_references_as_dict())
9. Выделите текст
Чтобы выделить текст в PDF-файле, загрузите библиотеку Fitz, которая поможет вам выполнить эту задачу. После установки библиотеки Fitz вы готовы начать. Вот пример синтаксиса, показывающий, как выделить текст:
импортировать фитц
# открытие pdf файла
pdf_file = fitz.open(“sample.pdf”)
# введите текст, который будет выделен
текст = “Рекомендующий”
# перебор страниц для выделения введенной фразы
для страницы в pdf_file:
match_words = page.searchFor(текст)
для слова в match_words:
подсветка = page.addHighlightAnnot(слово)
выделить.обновление()
# сохранение pdf-файла как выделенного.pdf
pdf_file.save(“выделенный.pdf”)
Обратите внимание, что компания, упомянутая в этой статье, не связана с компанией Indeed.