Created
April 21, 2023 13:31
-
-
Save elPytel/9bc030724cfb422a4a4ae24151ebe878 to your computer and use it in GitHub Desktop.
Simple python script for merging .PDF files.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# By Pytel & Copilot | |
""" | |
Tento program slouží k sloučení PDF souborů do jednoho. | |
Použití: | |
python main.py -f "./PDFs" -o "merged.pdf" | |
Parametry: | |
-f --folder složka s PDF soubory | |
-o --output výstupní soubor | |
-h --help nápověda | |
-D --debug ladící výstup | |
-V --verbose podrobný výstup | |
""" | |
folder = "PDFs" | |
import os | |
import argparse | |
from PyPDF2 import PdfMerger, PdfReader | |
def get_pdfs_from_folder(folder): | |
""" Get pdfs from folder. """ | |
pdfs = [] | |
if not os.path.isdir(folder): | |
raise Exception("Folder {} does not exist.".format(folder)) | |
for file in os.listdir(folder): | |
if file.endswith(".pdf"): | |
pdfs.append(os.path.join(folder, file)) | |
return pdfs | |
def merge_pdfs(pdfs, final_name: str ="merged.pdf"): | |
""" Merge pdfs. """ | |
merger = PdfMerger() | |
for pdf in pdfs: | |
if not os.path.isfile(pdf): | |
raise Exception("File {} does not exist.".format(pdf)) | |
else: | |
merger.append(PdfReader(open(pdf, 'rb'))) | |
merger.write(final_name) | |
merger.close() | |
def main(args): | |
""" Main function. """ | |
VERBOSE = args.verbose | |
DEBUG = args.debug | |
if args.folder: | |
folder = args.folder | |
else: | |
raise Exception("No folder specified.") | |
if args.output: | |
output = args.output | |
else: | |
print("No output specified. Using default output: merged.pdf") | |
output = "merged.pdf" | |
print("Getting PDFs from folder...") if VERBOSE else None | |
pdfs = get_pdfs_from_folder(folder) | |
print("Merging PDFs...") if VERBOSE else None | |
merge_pdfs(pdfs, output) | |
print("Done.") | |
def config_parser(): | |
""" Config parser. """ | |
parser = argparse.ArgumentParser(description='Merge PDFs.') | |
parser.add_argument('-f', '--folder', help='folder with PDFs') | |
parser.add_argument('-o', '--output', help='output file') | |
parser.add_argument('-D', '--debug', help='debug output', action='store_true') | |
parser.add_argument('-V', '--verbose', help='verbose output', action='store_true') | |
return parser | |
if __name__ == "__main__": | |
parser = config_parser() | |
args = parser.parse_args() | |
try: | |
main(args) | |
except Exception as e: | |
print("Error:", e) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment