Files
notes/code/misc/python/scripts/pdfmerge.py
2024-12-20 21:50:09 +00:00

68 lines
2.2 KiB
Python

#!/usr/bin/env python
import sys
try:
from PyPDF2 import PdfFileReader, PdfFileWriter,PdfFileMerger
except ImportError:
from pyPdf import PdfFileReader, PdfFileWriter
def pdf_merge(input_files, output_stream, rotation=0):
input_streams = []
try:
# First open all the files, then produce the output file, and
# finally close the input files. This is necessary because
# the data isn't read from the input files until the write
# operation. Thanks to
# https://stackoverflow.com/questions/6773631/problem-with-closing-python-pypdf-writing-getting-a-valueerror-i-o-operation/6773733#6773733
for input_file in input_files:
input_streams.append(open(input_file, 'rb'))
writer = PdfFileWriter()
for reader in map(PdfFileReader, input_streams):
for n in range(reader.getNumPages()):
page=reader.getPage(n)
page.rotateClockwise(rotation)
writer.addPage(page)
writer.write(output_stream)
finally:
for f in input_streams:
f.close()
def fileslist (directorypath):
import glob, os
files= glob.glob(directorypath+'/*.pdf')
return files
def pdf_cat(input_files, outputfilename="results.pdf"):
pdfs = input_files
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(PdfFileReader(pdf, 'rb'))
merger.write(outputfilename)
merger.close()
if __name__ == '__main__':
if sys.platform == "win32":
import os, msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
#pdf_cat(sys.argv[1:], sys.stdout)
output_path=r'/home/dl92/Documents/DigitalPaper/Upload/merged.pdf'
output_path2=r'/home/dl92/Documents/DigitalPaper/Upload/Firework Maker.pdf'
files=fileslist(r'/home/dl92/Documents/DigitalPaper/Upload')
files.sort()
output_stream = open(output_path, 'wb')
pdf_merge(files[0:5] ,output_stream,90)
output_stream.close()
output_stream = open(output_path2, 'wb')
pdf_merge([output_path]+files[5:7] ,output_stream,0)
output_stream.close()
#pdf_merge(fileslist(r'/home/dl92/Documents/DigitalPaper/Upload'),output_stream)