0 / 0 / 0
Регистрация: 21.04.2015
Сообщений: 38

Замена текста в PDF

03.08.2022, 10:42. Показов 3682. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Стоит задача в большом количестве pdf-файлов поменять одно слово.
Изначально для решения этой задачи использовал этот способ, но возникла проблема с текстом на кириллице.

Попробовал "прикрутить" второй способ, но теперь проблема с записью текста в pdf. Нарушается структура файлов.
Может есть у кого рабочий пример или подскажите способ решения.

Итоговый код получился следующим:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import glob
import os
 
from PyPDF2 import PdfFileWriter
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
 
REPLACEMENTS = {
    'ИЗВЕЩЕНИЕ': 'УВЕДОМЛЕНИЕ',
}
 
 
class PDFMiner:
    """
    PDFMiner wrapper to get PDF Text
    """
 
    @classmethod
    def getPDFText(cls, pdfFilenamePath, throwError: bool = True):
        retstr = StringIO()
        parser = PDFParser(open(pdfFilenamePath, 'rb'))
        try:
            document = PDFDocument(parser)
        except Exception as e:
            errMsg = f"error {pdfFilenamePath}:{str(e)}"
            print(errMsg)
            if throwError:
                raise e
            return ''
        if document.is_extractable:
            rsrcmgr = PDFResourceManager()
            device = TextConverter(rsrcmgr, retstr, laparams=LAParams())
            interpreter = PDFPageInterpreter(rsrcmgr, device)
            for page in PDFPage.create_pages(document):
                interpreter.process_page(page)
            return retstr.getvalue()
        else:
            print(pdfFilenamePath,
                  "Warning: could not extract text from pdf file.")
            return ''
 
 
for file in glob.glob('*.pdf'):
    text = PDFMiner.getPDFText(file)
    writer = PdfFileWriter()
    FILEWITHOUTEXTENSION = os.path.splitext(file)[0]
    for (key, value) in REPLACEMENTS.items():
        text = text.replace(key, value)
 
    with open(FILEWITHOUTEXTENSION + '_rezult.pdf', 'wb') as rez_file:
        writer.write(rez_file)
Заранее благодарю!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2022, 10:42
Ответы с готовыми решениями:

Замена текста в pdf
Здравствуйте. Нужно по всему pdf файлу заменить пару слов например "старая строка" заменить на "новая строчка" после чего...

Замена текста в PDF-файле
Как заменить текст в PDF файле? например в pdf есть слово "пес" хочу заменить его на "кот". Только пожалуйста не отправляйте...

Замена цвета pdf документа
Доброго времени суток. Имеем фотошоп и 400 страниц pdf документа, у каждой страницы нужно изменить цвет, причем у всех один и тот же....

1
148 / 111 / 37
Регистрация: 28.11.2013
Сообщений: 383
03.08.2022, 14:36
Нашел такой пример в интернете:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
import glob
from pyPdf import PdfFileReader
import pdfminer
 
f=open("d:/data/processed_data/paper/iscram/2006/iscram1.txt",'w')
parent = "d:/data/processed_data/paper/iscram/2006"
os.chdir(parent)
filename = os.path.abspath('iscram1.pdf')
 
input = PdfFileReader(file(filename, "rb"))
 
for page in input.pages:
    f.write(page.extractText().encode('UTF-8'))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2022, 14:36
Помогаю со студенческими работами здесь

Поиск части текста в диапазоне ячеек и замена этого текста на найденное соответсвие
Имеется список адресов, которым нужно присвоить в отдельной ячейке название микрорайона. Есть отдельная таблица с названиями микрорайонов и...

Чтение текста из PDF
я сканировал документ сохранил его по имени doc1.pdf как я могу из Delphi извлечь текст из doc1.pdf?

Добавление текста в pdf
Здравствуйте! Мне нужно на готовый Pdf файл добавить еще три строчки в конце. Можно во время печати, но обязательно надо это кодом сделать....

Копирование текста из pdf
Всем привет. Почти весь день убил поиском ответа на простой вопрос: как скопировать текст из pdf ? При копировании текста из pdf в...

Выделение текста в PDF
Заранее извиняюсь за неправильный выбор раздела. Имею большой документ с вопросами. Пример: Вопрос ? Варианты ответов : a) первый ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru