Skip to content

Instantly share code, notes, and snippets.

@KoStard
Created January 15, 2025 18:11
Show Gist options
  • Save KoStard/6ce5bc1cf63568fac18f97193b6ab91e to your computer and use it in GitHub Desktop.
Save KoStard/6ce5bc1cf63568fac18f97193b6ab91e to your computer and use it in GitHub Desktop.
Script to merge multiple PDFs, with sorting the files with natural sort
import os
import sys
from PyPDF2 import PdfMerger
from natsort import natsorted
def merge_pdfs(directory, output_filename):
# Initialize PdfMerger
merger = PdfMerger()
# Get all PDF files in the directory
pdf_files = [f for f in os.listdir(directory) if f.endswith('.pdf')]
# Sort files using natural sort
pdf_files = natsorted(pdf_files)
# Merge PDFs
for pdf in pdf_files:
merger.append(os.path.join(directory, pdf))
# Write the merged PDF to the output file
merger.write(output_filename)
merger.close()
print(f"Merged PDF saved as {output_filename}")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python merge_pdfs.py <directory> <output_filename>")
sys.exit(1)
directory = sys.argv[1]
output_filename = sys.argv[2]
if not os.path.isdir(directory):
print(f"Error: {directory} is not a valid directory.")
sys.exit(1)
merge_pdfs(directory, output_filename)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment