У меня есть PDF-документ с заданным порядком страниц (скажем, 1 - это страница 1, а 2 - это страница 2)
поэтому в начале порядок страниц нормальный,
1,2,3,4,5,6,7,8,9 ....
но теперь мне нужно переставить страницы в PDF-документезлым способом напечатать это -> Я должен изменить последовательность страниц до необходимой последовательности :
1,2,3, 7,8,9,13,14,15, 4,5,6, 10,11,12, 16,17,18
, а затем то же самое со страницами 19 до 36, а затем снова с 37 до 54
Я попробовал это с пакетом Python PyPDF2 и смог получить каждую страницу example.pdf выводится как example_page- * .pdf , так что теперь страница 1 называется example_page-1.pdf , а страница 65 называется example_page-65.pdf .
Но как я могу объединить документы в необходимой последовательности ?
Моя попытка была сделана с помощью следующих манипуляций с кодом, представленным DZone (https://dzone.com/articles/splitting-and-merging-pdfs-with-python):
import os
from PyPDF2 import PdfFileReader
from PyPDF2 import PdfFileWriter
def pdf_splitter(path):
fname = os.path.splitext(os.path.basename(path))[0]
pdf = PdfFileReader(path)
for page in range(pdf.getNumPages()):
pdf_writer = PdfFileWriter()
pdf_writer.addPage(pdf.getPage(page))
output_filename = '{}_page_{}.pdf'.format(
fname, page+1)
with open(output_filename, 'wb') as out:
pdf_writer.write(out)
print('Created: {}'.format(output_filename))
if __name__ == '__main__':
path = '/Users/timmy/Desktop/Print_Order_Problem/THE_ORDERED.pdf'
pdf_splitter(path)
объединение вместе
import glob
from PyPDF2 import PdfFileMerger
def merger(output_path, input_paths):
pdf_merger = PdfFileMerger()
file_handles = []
for path in input_paths:
pdf_merger.append(path)
with open(output_path, 'wb') as fileobj:
pdf_merger.write(fileobj)
if __name__ == '__main__':
paths = glob.glob('THE_ORDERED_page_*.pdf')
paths.replace()
paths.sort()
merger('pdf_merger1.pdf', paths)
Я надеюсь, что смогу объединить PDF-файлы в указанном порядке. Я знаю, что шаг paths.sort()
необходимо изменить.
Я думаю, что это большая проблема, и я удивлен, насколько это сложно и увлекательно! Любая помощь очень ценится.