Самый оптимизированный способ объединить рисунки из нескольких PDF-файлов в одну PDF-страницу? - PullRequest
0 голосов
/ 21 мая 2019

Я являюсь разработчиком NLS GNSS SOFAMESA (https://github.com/nlsfi/nls-gnss-sofamesa) и выпускаю новую версию на этой неделе. Ожидается много обновлений. Однако я не выяснил, какой способ наиболее оптимизирован)объединить рисунки из нескольких PDF-файлов в одну PDF-страницу. Я использовал библиотеки reportlab и pypdf2 для создания PDF-файлов.

Первый файл PDF: 18 рисунков на отдельных страницах. Всего 18 страниц.

Второй файл PDF: 18 рисунков на отдельных страницах. Всего 18 страниц.

Объединенный файл PDF: 36 рисунков, так что первая цифра изПервый PDF-файл совпадает с первым рисунком из второго PDF-файла. Таким образом, два рисунка на страницу. Всего 18 страниц.

В дальнейшем должно быть максимум 5 рисунков на страницу из пяти разных PDF-файлов. ^ два PDF-файлаПример файла - это просто пример.

Вариант 1: Если «Объединенный файл PDF» может быть создан с помощью объединения существующих первого и второго файлов PDF, это будет самый быстрыйway.

Вариант 2: Рисунки сохраняются в определенную папку, так что я могу просто сделать новый PDF из местоположений рисунков.Не самый быстрый способ.

Пример, в merger1 неправильно создан "... Combined_Measurement_Report_plain.pdf", содержащий цифры:

def merger1(output_path, input_paths):
    pdf_merger = PdfFileMerger()

    for path in input_paths:
        pdf_merger.merge(position = 1, fileobj = path, pages = (5, 22))

    with open(output_path, 'wb') as fileobj:
        pdf_merger.write(fileobj)

    output_path = [output_path]
    return output_path

output_filepaths = merger1('{0}{3}{1}_{2}_Combined_Measurement_Report_plain.pdf'.format(number_of_visit_at_the_reference_point_folder_path, name_of_the_reference_point_folder, number_of_visit_at_the_reference_point, os.sep), filepaths)

Как ранее описано, я ожидаю:

Объединенный файл PDF: 36 рисунков, так что первая цифра из первого файла PDF совпадает с первой цифрой из второго файла PDF.Таким образом, две цифры на странице.Всего 18 страниц.

В дальнейшем должно быть не более 5 рисунков на страницу из пяти разных PDF-файлов.^ Пример двух файлов в формате PDF является лишь примером.

1 Ответ

0 голосов
/ 29 мая 2019

Вы можете использовать PyPDF2 или pdfrw для такого рода вещей.На самом деле я бы порекомендовал pdfrw, потому что вы можете указать прямоугольник в PDF для работы.Он также поддерживает XObjects.

Существует множество примеров на Github , и автор также довольно чутко реагирует на вопросы.

Поскольку у меня нет доступа к рассматриваемым файлам, я могу только догадываться об ответе.Однако я предполагаю, что вам нужно будет составить сопоставление координат для фрагментов, которые вы хотите извлечь в пути к файлам PDF (то есть, dict).Затем выполните итерацию по своему словарю и извлеките нужные биты, записывая их в новый файл по ходу работы.

...