@zanyato11111

Как найти и изменить текст в pdf файле?

Здравствуйте, не удается никак изменить текст в pdf файле. Пробовал с библиотекой pypdf2

Пробовал такой код, но файл на выходе без изменений:

pathfile = "prices.pdf"
    pdf = PdfReader(pathfile)
    pdf_ready = PdfWriter()

    firstpage = pdf.pages[0]

    for index in range(0, len(firstpage.get_contents())):

        decoded_first_page = firstpage.get_contents()[index].get_object()
        decoded_first_page.decoded_self

        content = decoded_first_page.get_object().get_data()

        content = content.replace('victor@gmail.ru'.encode('utf-8'),  'eblni@gmail.com'.encode('utf-8'))

        decoded_first_page.get_object().set_data(content)

    pdf_ready.add_page(firstpage)

    with open("prices_modified.pdf", 'wb') as file:
        pdf_ready.write(file)


Может кто сталкивался с такой задачей?
  • Вопрос задан
  • 535 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Как найти и изменить текст в pdf файле?

В общем случае никак. PDF может содержать просто картинки с отсканированными страницами, может содержать векторные рисуночки букв вместо струткурного текста, может содержать просто набор кривых, составляющих буквы, причем они не будут даже сгруппированы в отдельные символы или строки.
Если вам повезло и конкретно ваши прайсы подготовлены так, что внутри сохранилась информация с текстом для текстового поиска, то это не значит, что заменив этот текст в бинарном файле у вас что-то изменится. или хотя бы не поломается в отображении документа. А ещё pdf может быть защищен, зашифрован, подписан ЭЦП, обфусцирован для извлечения данных...

Единственное более-менее работающее решение - это распознать текст любым инструментом OCR, отобразить его на виртуальном холсте и нарисовать сверху заплатки с новым текстом, если новый текст вообще поместится поверх старого.
Потом снова печатаем холст в PDF. Это страшный геморрой и лучге брать исходный документ и менть текст в нём, как вам уже предложили в комментариях.

Проще сверстать документ заново, чем, в общем случае, редактировать что-то в PDF.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы