У меня есть большой PDF-файл, и мне нужно разбить его на каждые «X» страниц, но «X» может меняться.
Мне нужно разделить каждую страницу, где страница содержит текст «Имя:», но где текст после «Имя:» меняется...
Таким образом, на странице 1 может быть «Имя: Сачин», тогда на странице 2 также может быть «Имя: Сачин», но на странице 3 есть «Имя: Сара», поэтому она должна быть отделена от страниц с 1 по 2, а затем на страницу 3.
Вот скрипт, который я нашел, но он независимо разбивается на каждую страницу.
https://www.blog.pythonlibrary.org/2018 ... th-python/
Заранее спасибо,
Сачин
ОБНОВЛЕНИЕ:
Вот код, который разбивает каждую страницу независимо от того, но который определяет имя после того, как текст «Имя:» найден, и соответственно переименовывает разделенный файл, в имени файла есть имя.
Как мне обновить код, чтобы при обнаружении двух последовательных страниц с одинаковым именем (после текстового поля «Имя:») это ДЕЛАЕТ НЕ РАЗДЕЛИТЬ на этой странице, а объединить две страницы с одинаковым именем в один PDF-файл?
Еще раз спасибо,
Сачин
import os
import re
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_file_path = 'Payslips.pdf'
file_base_name = pdf_file_path.replace('.pdf', '')
output_folder_path = os.path.join(os.getcwd(), 'Output')
pdf = PdfFileReader(pdf_file_path)
for page_num in range(pdf.numPages):
# Setup Objects & Classes
pdfWriter = PdfFileWriter()
pageObj = pdf.getPage(page_num)
pdfWriter.addPage(pageObj)
# Extract Text
Text = pageObj.extractText()
# print(Text)
MatchedTextArray = re.findall("Name:[^0-9]+?\s", Text)
MatchedText = (MatchedTextArray[0].replace('Name:', '')).replace('\n', '')
# Splitting on UpperCase
res_pos = [i for i, e in enumerate(MatchedText+'A') if e.isupper()]
res_list = [MatchedText[res_pos[j]:res_pos[j + 1]]
for j in range(len(res_pos)-1)]
# Extracting Firstname
firstname = res_list[1]
# Extracting Surname
del res_list[0:2]
surname = ''.join(res_list)
with open(os.path.join(output_folder_path,
'{0}, {1} - {2}.pdf'.format(surname.upper(), firstname.upper(), file_base_name.upper())),
'wb') as f:
pdfWriter.write(f)
f.close()
print("Split Page " + str(page_num))
Подробнее здесь: https://stackoverflow.com/questions/708 ... pecific-un
Как разделить PDF-файл с помощью Python, каждая страница которого содержит набор определенного уникального текста ⇐ Python
Программы на Python
1771056175
Anonymous
У меня есть большой PDF-файл, и мне нужно разбить его на каждые «X» страниц, но «X» может меняться.
Мне нужно разделить каждую страницу, где страница содержит текст «Имя:», но где текст после «Имя:» меняется...
Таким образом, на странице 1 может быть «Имя: Сачин», тогда на странице 2 также может быть «Имя: Сачин», но на странице 3 есть «Имя: Сара», поэтому она должна быть отделена от страниц с 1 по 2, а затем на страницу 3.
Вот скрипт, который я нашел, но он независимо разбивается на каждую страницу.
https://www.blog.pythonlibrary.org/2018/04/11/splitting-and-merging-pdfs-with-python/
Заранее спасибо,
Сачин
[b]ОБНОВЛЕНИЕ[/b]:
Вот код, который разбивает каждую страницу независимо от того, но который определяет имя после того, как текст «Имя:» найден, и соответственно переименовывает разделенный файл, в имени файла есть имя.
Как мне обновить код, чтобы при обнаружении двух последовательных страниц с одинаковым именем (после текстового поля «Имя:») это ДЕЛАЕТ НЕ РАЗДЕЛИТЬ на этой странице, а объединить две страницы с одинаковым именем в один PDF-файл?
Еще раз спасибо,
Сачин
import os
import re
from PyPDF2 import PdfFileReader, PdfFileWriter
pdf_file_path = 'Payslips.pdf'
file_base_name = pdf_file_path.replace('.pdf', '')
output_folder_path = os.path.join(os.getcwd(), 'Output')
pdf = PdfFileReader(pdf_file_path)
for page_num in range(pdf.numPages):
# Setup Objects & Classes
pdfWriter = PdfFileWriter()
pageObj = pdf.getPage(page_num)
pdfWriter.addPage(pageObj)
# Extract Text
Text = pageObj.extractText()
# print(Text)
MatchedTextArray = re.findall("Name:[^0-9]+?\s", Text)
MatchedText = (MatchedTextArray[0].replace('Name:', '')).replace('\n', '')
# Splitting on UpperCase
res_pos = [i for i, e in enumerate(MatchedText+'A') if e.isupper()]
res_list = [MatchedText[res_pos[j]:res_pos[j + 1]]
for j in range(len(res_pos)-1)]
# Extracting Firstname
firstname = res_list[1]
# Extracting Surname
del res_list[0:2]
surname = ''.join(res_list)
with open(os.path.join(output_folder_path,
'{0}, {1} - {2}.pdf'.format(surname.upper(), firstname.upper(), file_base_name.upper())),
'wb') as f:
pdfWriter.write(f)
f.close()
print("Split Page " + str(page_num))
Подробнее здесь: [url]https://stackoverflow.com/questions/70817546/how-do-i-split-a-pdf-using-python-every-page-that-contains-a-set-of-specific-un[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия