Усі ви повинні знати, що таке PDF-файли. Фактично, вони є одними з найважливіших і широко використовуваних цифрових засобів масової інформації. PDF означає Портативний формат документа . Це використовує .pdf розширення. Він використовується для надійного представлення та обміну документами незалежно від програмного забезпечення, апаратного забезпечення чи операційної системи.
Винайдено Adobe PDF тепер є відкритим стандартом, який підтримує Міжнародна організація стандартизації (ISO). PDF-файли можуть містити посилання та кнопки, поля форм, аудіо, відео та бізнес-логіку.
У цій статті ми дізнаємося, як ми можемо виконувати різні операції, такі як:
- Вилучення тексту з PDF
- Обертання сторінок PDF
- Об’єднання PDF-файлів
- Розбиття PDF
- Додавання водяного знака на сторінки PDF
Установка: Використання простих скриптів python!
Ми будемо використовувати сторонній модуль, pypdf.
pypdf це бібліотека Python, створена як інструментарій PDF. Він здатний:
- Отримання інформації про документ (назва, автор, …)
- Розбиття документів сторінка за сторінкою
- Об’єднання документів сторінка за сторінкою
- Обрізка сторінок
- Об’єднання кількох сторінок в одну
- Шифрування та дешифрування файлів PDF
- і більше!
Щоб інсталювати pypdf, виконайте таку команду з командного рядка:
pip install pypdf>
Ця назва модуля чутлива до регістру, тому переконайтеся, що і є малими літерами, а все інше – великими. Увесь код і PDF-файли, використані в цьому посібнику/статті, доступні тут .
1. Вилучення тексту з файлу PDF
Python
# importing required classes> from> pypdf>import> PdfReader> > # creating a pdf reader object> reader>=> PdfReader(>'example.pdf'>)> > # printing number of pages in pdf file> print>(>len>(reader.pages))> > # creating a page object> page>=> reader.pages[>0>]> > # extracting text from page> print>(page.extract_text())> |
>
найкраще авто в світі
>
Вихід вищезазначеної програми виглядає так:
20 PythonBasics S.R.Doty August27,2008 Contents 1Preliminaries 4 1.1WhatisPython?................................... ..4 1.2Installationanddocumentation.................... .........4 [and some more lines...]>
Давайте спробуємо зрозуміти наведений вище код частинами:
reader = PdfReader('example.pdf')> - Тут ми створюємо об’єкт PdfReader класу модуля pypdf і передати шлях до файлу PDF і отримати об’єкт читача PDF.
print(len(reader.pages))>
- сторінки властивість визначає кількість сторінок у файлі PDF. Наприклад, у нашому випадку це 20 (див. перший рядок виводу).
pageObj = reader.pages[0]>
- Тепер ми створюємо об’єкт PageObject клас модуля pypdf. Об’єкт читання PDF має функцію сторінки[] який приймає номер сторінки (починаючи з індексу 0) як аргумент і повертає об’єкт сторінки.
print(pageObj.extract_text())>
- Об'єкт сторінки має функцію extract_text() щоб отримати текст зі сторінки PDF.
Примітка: Хоча PDF-файли чудово підходять для розміщення тексту таким чином, щоб його було легко друкувати та читати, програмному забезпеченню непросто розібрати їх у відкритий текст. Таким чином, pypdf може робити помилки під час видобування тексту з PDF-файлу та взагалі не зможе відкрити деякі PDF-файли. На жаль, ви не можете багато з цим зробити. pypdf може просто не працювати з деякими з ваших PDF-файлів.
2. Обертання сторінок PDF
Python
# importing the required classes> from> pypdf>import> PdfReader, PdfWriter> > def> PDFrotate(origFileName, newFileName, rotation):> > ># creating a pdf Reader object> >reader>=> PdfReader(origFileName)> > ># creating a pdf writer object for new pdf> >writer>=> PdfWriter()> > ># rotating each page> >for> page>in> range>(>len>(reader.pages)):> > ># creating rotated page object> >pageObj>=> reader.pages[page]> >pageObj.rotate(rotation)> > ># adding rotated page object to pdf writer> >pdfWriter.add_page(pageObj)> > ># new pdf file object> >newFile>=> open>(newFileName,>'wb'>)> > ># writing rotated pages to new file> >pdfWriter.write(newFile)> > ># closing the new pdf file object> >newFile.close()> > > def> main():> > ># original pdf file name> >origFileName>=> 'example.pdf'> > ># new pdf file name> >newFileName>=> 'rotated_example.pdf'> > ># rotation angle> >rotation>=> 270> > ># calling the PDFrotate function> >PDFrotate(origFileName, newFileName, rotation)> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()> |
>
>
Тут ви можете побачити, як виглядає перша сторінка rotated_example.pdf виглядає так (праве зображення) після повороту:
javatable

Деякі важливі моменти, пов’язані з наведеним вище кодом:
- Для ротації ми спочатку створюємо об’єкт читання PDF оригінального PDF.
writer = PdfWriter()>
- Повернуті сторінки будуть записані в новий PDF-файл. Для запису в PDF ми використовуємо об’єкт of PdfWriter клас модуля pypdf.
for page in range(len(pdfReader.pages)): pageObj = pdfReader.pages[page] pageObj.rotate(rotation) pdfWriter.add_page(pageObj)>
- Тепер ми повторюємо кожну сторінку оригінального PDF-файлу. Ми отримуємо об'єкт сторінки .pages[] метод класу PDF reader. Тепер ми повертаємо сторінку на обертати () метод класу об'єктів сторінки. Потім ми додаємо сторінку до об’єкта PDF writer за допомогою addage() метод класу запису PDF шляхом передачі об’єкта повернутої сторінки.
newFile = open(newFileName, 'wb') pdfWriter.write(newFile) newFile.close()>
- Тепер нам потрібно записати PDF-сторінки в новий PDF-файл. По-перше, ми відкриваємо новий файловий об’єкт і записуємо в нього PDF-сторінки за допомогою написати() метод об'єкта запису PDF. Нарешті, ми закриваємо оригінальний об’єкт PDF-файлу та новий об’єкт файлу.
3. Об'єднання файлів PDF
Python
# importing required modules> from> pypdf>import> PdfMerger> > > def> PDFmerge(pdfs, output):> ># creating pdf file merger object> >pdfMerger>=> PdfMerger()> > ># appending pdfs one by one> >for> pdf>in> pdfs:> >pdfMerger.append(pdf)> > ># writing combined pdf to output pdf file> >with>open>(output,>'wb'>) as f:> >pdfMerger.write(f)> > > def> main():> ># pdf files to merge> >pdfs>=> [>'example.pdf'>,>'rotated_example.pdf'>]> > ># output pdf file name> >output>=> 'combined_example.pdf'> > ># calling pdf merge function> >PDFmerge(pdfs>=>pdfs, output>=>output)> > > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()> |
>
int рядок java
>
Результатом вищевказаної програми є комбінований PDF, об'єднаний_приклад.pdf , отримані шляхом злиття приклад.pdf і rotated_example.pdf .
- Давайте розглянемо важливі аспекти цієї програми:
pdfMerger = PdfMerger()>
- Для злиття ми використовуємо попередньо зібраний клас, PdfMerger модуля pypdf.
Тут ми створюємо об’єкт pdfMerger класу злиття PDF
for pdf in pdfs: pdfmerger.append(open(focus, 'rb'))>
- Тепер ми додаємо об’єкт файлу кожного PDF-файлу до об’єкта об’єднання PDF за допомогою додати() метод.
with open(output, 'wb') as f: pdfMerger.write(f)>
- Нарешті, ми записуємо сторінки PDF у вихідний файл PDF за допомогою писати метод злиття об'єктів PDF.
4. Розбиття файлу PDF
Python
# importing the required modules> from> pypdf>import> PdfReader, PdfWriter> > def> PDFsplit(pdf, splits):> ># creating pdf reader object> >reader>=> PdfReader(pdf)> > ># starting index of first slice> >start>=> 0> > ># starting index of last slice> >end>=> splits[>0>]> > > >for> i>in> range>(>len>(splits)>+>1>):> ># creating pdf writer object for (i+1)th split> >writer>=> PdfWriter()> > ># output pdf file name> >outputpdf>=> pdf.split(>'.pdf'>)[>0>]>+> str>(i)>+> '.pdf'> > ># adding pages to pdf writer object> >for> page>in> range>(start,end):> >writer.add_page(reader.pages[page])> > ># writing split pdf pages to pdf file> >with>open>(outputpdf,>'wb'>) as f:> >writer.write(f)> > ># interchanging page split start position for next split> >start>=> end> >try>:> ># setting split end position for next split> >end>=> splits[i>+>1>]> >except> IndexError:> ># setting split end position for last split> >end>=> len>(reader.pages)> > > def> main():> ># pdf file to split> >pdf>=> 'example.pdf'> > ># split page positions> >splits>=> [>2>,>4>]> > ># calling PDFsplit function to split pdf> >PDFsplit(pdf, splits)> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()> |
>
>
На виході будуть три нові PDF-файли з розділ 1 (сторінка 0,1), розділ 2 (сторінка 2,3), розділ 3 (сторінка 4-кінець) .
У наведеній вище програмі на Python не було використано жодної нової функції чи класу. Використовуючи просту логіку та ітерації, ми створили розділення пройдених PDF відповідно до списку пройдених розколюється .
5. Додавання водяного знака на сторінки PDF
Python
зробити сценарій sh виконуваним
# importing the required modules> from> pypdf>import> PdfReader> > def> add_watermark(wmFile, pageObj):> ># creating pdf reader object of watermark pdf file> >reader>=> PdfReader(wmFileObj)> > ># merging watermark pdf's first page with passed page object.> >pageObj.merge_page(reader.pages[>0>])> > ># returning watermarked page object> >return> pageObj> > def> main():> ># watermark pdf file name> >mywatermark>=> 'watermark.pdf'> > ># original pdf file name> >origFileName>=> 'example.pdf'> > ># new pdf file name> >newFileName>=> 'watermarked_example.pdf'> > ># creating pdf File object of original pdf> >pdfFileObj>=> open>(origFileName,>'rb'>)> > ># creating a pdf Reader object> >reader>=> PdfReader(pdfFileObj)> > ># creating a pdf writer object for new pdf> >writer>=> PdfWriter()> > ># adding watermark to each page> >for> page>in> range>(>len>(reader.pages)):> ># creating watermarked page object> >wmpageObj>=> add_watermark(mywatermark, reader.pages[page])> > ># adding watermarked page object to pdf writer> >writer.add_page(wmpageObj)> > ># new pdf file object> >newFile>=> open>(newFileName,>'wb'>)> > ># writing watermarked pages to new file> >writer.write(newFile)> > ># closing the new pdf file object> >newFile.close()> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()> |
>
>
Ось як виглядає перша сторінка оригінального (ліворуч) і водяного знака (праворуч) PDF-файлу:

- Весь процес такий самий, як у прикладі ротації сторінки. Єдина різниця:
wmpageObj = add_watermark(mywatermark, pdfReader.pages[page])>
- Об’єкт сторінки перетворюється на об’єкт сторінки з водяним знаком за допомогою add_watermark() функція.
- Давайте спробуємо розібратися add_watermark() функція:
reader = PdfReader(wmFile) pageObj.merge_page(reader.pages[0]) wmFileObj.close() return pageObj>
- По-перше, ми створюємо об’єкт для читання PDF водяний знак.pdf . До переданого об'єкта сторінки ми використовуємо merge_page() і передати об’єкт сторінки першої сторінки об’єкта читача PDF із водяним знаком. Це накладе водяний знак на переданий об’єкт сторінки.
І ось ми підійшли до кінця цього довгого посібника з роботи з PDF-файлами в Python.
Тепер ви можете легко створити власний PDF-менеджер!
Література:
- https://automatetheboringstuff.com/chapter13/
- https://pypi.org/project/pypdf/
Якщо вам подобається techcodeview.com і ви хочете зробити свій внесок, ви також можете написати статтю за допомогою write.techcodeview.com або надіслати статтю на адресу [email protected]
Будь ласка, пишіть коментарі, якщо ви знайшли щось невірне або якщо ви хочете поділитися додатковою інформацією про тему, розглянуту вище.