Страницы соединения Python PyPDF2

У меня есть PDF-файл с большой таблицей, разбитой на страницы, поэтому мне нужно объединить постраничные таблицы в большую таблицу на большой странице.

Возможно ли это с PyPDF2 или другой библиотекой?

Ваше здоровье


person Felipe Buccioni    schedule 04.07.2014    source источник
comment
Не могли бы вы предоставить несколько образцов страниц?   -  person willo    schedule 08.07.2014
comment
ispch.cl/sites/default/files/uso_tratamiento.pdf   -  person Felipe Buccioni    schedule 10.07.2014


Ответы (2)


Просто работая над чем-то подобным, он берет входной PDF-файл, и через файл конфигурации вы можете установить окончательный шаблон отдельных страниц. Реализация с PyPDF2, но все еще есть проблемы с некоторыми pdf-файлами (придется копать глубже). https://github.com/Lageos/pdf-stitcher

В принципе, добавление страницы прямо к другой работает так:

import PyPDF2

with open('input.pdf', 'rb') as input_file:
    # load input pdf
    input_pdf = PyPDF2.PdfFileReader(input_file)

    # start new PyPDF2 PageObject
    output_pdf = input_pdf.getPage(page_number)

    # get second page PyPDF2 PageObject
    second_pdf = input_pdf.getPage(second_page_number)

    # dimensions for offset from loaded page (adding it to the right)
    offset_x = output_pdf.mediaBox[2]
    offset_y = 0

    # add second page to first one
    output_pdf.mergeTranslatedPage(second_pdf, offset_x, offset_y, expand=True)

    # write finished pdf
    with open('output.pdf', 'wb') as out_file:
            write_pdf = PyPDF2.PdfFileWriter()
            write_pdf.addPage(output_pdf)
            write_pdf.write(out_file)

Для добавления страницы ниже требуется offset_y. Вы можете получить сумму от offset_y = first_pdf.mediaBox[3].

person Lageos    schedule 07.01.2016
comment
Добавлен код, который показывает, как объединить две страницы. Добавление нескольких выполняется зацикливанием. - person Lageos; 08.01.2016

Я понимаю, что это довольно сложно. См. здесь и здесь.

Проблема, похоже, в том, что таблицы не очень хорошо представлены в pdf, а просто состоят из абсолютно позиционированных строк (см. первую ссылку выше).

Вот два возможных обходных пути (не уверен, что они сделают это за вас):

  • вы можете распечатать несколько страниц на одной странице и масштабировать страницу, чтобы сделать ее читаемой....
  • откройте pdf с помощью inkscape или чего-то подобного. После разгруппировки у вас должен быть доступ к отдельным элементам, из которых состоят таблицы, и возможность комбинировать их так, как вам удобно.

ИЗМЕНИТЬ

Взгляните на libre office draw, еще один векторный пакет. Я только что открыл в нем PDF-файл, и он, кажется, сохранил часть структуры PDF-файла и отредактировал отдельные элементы.

EDIT 2 Посмотрите pdftables, это может помочь.

PDFTables помогает извлекать таблицы из файлов PDF.

Я не пробовал, хотя ... может быть, немного позже, чтобы посмотреть, смогу ли я заставить его работать.

person pandita    schedule 08.07.2014
comment
Мне нужен запрограммированный способ сделать это, и я понимаю сложность операции. Я могу обработать таблицу прямо сейчас, но не так, как я хочу. - person Felipe Buccioni; 10.07.2014