Редактировать существующие страницы PDF в Python - PullRequest
6 голосов
/ 25 июня 2019

У меня есть файл PDF, из которого я удалил несколько страниц.Я хочу исправить новые номера страниц PDF.Есть ли способ / библиотека для обновления номеров страниц без преобразования PDF в другой формат?Я попытался преобразовать PDF в текст, XML и Json, а затем исправить номер страницы.Однако, если я преобразую его обратно в pdf, он выглядит грязно (не может сохранить стиль оригинального pdf).Проблема у меня:

  1. Удаление старых номеров страниц.
  2. Добавление новых номеров страниц.

Я использую python в Ubuntu.Я пробовал ReportLab, PyX и pyfpdf.

1 Ответ

3 голосов
/ 03 июля 2019

У меня была похожая проблема, я, честно говоря, не смог полностью ее решить, скорее, я взял соответствующий html и обработал его с BeautifulSoup. Тем не менее, я получил более близкий подход, чем модули python, я использовал pdftotext.exe из poppler (ссылка внизу), чтобы прочитать файл pdf, и он работал просто отлично, кроме того факта, что он не мог различить текстовые столбцы , Поскольку это не модуль Python, я использовал os.system для вызова командной строки в файле .exe.

def call_poppler(input_pdf, input_path):

    """
    Call poppler to generate a txt file
    """
    command_row = input_path + " " + input_pdf
    os.system(command_row)
    txt_name = input_pdf[0:-4] + ".txt"
    processed_paper = open_txt(txt_name)
    return processed_paper

def open_txt(input_txt_name):

    """
    Open and generate a python object out of the
    txt attained with poppler
    """
    opened_file = open(input_txt_name,"rb").readlines()
    output_file = []
    for row in opened_file:
        row = row.decode("utf-8").strip()
        output_file.append(row)
    return output_file

Это возвращает вам обработанный файл ".txt", который вы можете затем обработать, как хотите, и переписать в виде PDF с некоторым модулем, таким как pypdf, извините, если это был не тот ответ, который вы хотели, но файлы PDF довольно сложны обрабатывать в Python, так как они не текстовые файлы. Не забудьте указать путь к исполняемому файлу. Вы можете получить попплер здесь: https://poppler.freedesktop.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...