Skip to content

pdf

pdf

merge_pdfs

merge_pdfs(pdf_paths, output_path, all_pages=False)

Merge multiple PDF files into a single PDF.

:param pdf_paths: List of paths to PDF files to merge. :param output_path: Path to save the merged PDF.

Source code in source/src/pdf.py
def merge_pdfs(pdf_paths, output_path, all_pages=False):
    """
    Merge multiple PDF files into a single PDF.

    :param pdf_paths: List of paths to PDF files to merge.
    :param output_path: Path to save the merged PDF.
    """
    # Assigning the pdfWriter() function to pdfWriter.
    pdfWriter = PyPDF2.PdfWriter()
    for filename in pdf_paths:  # Starting a for loop.
        pdf_file = open(filename, 'rb')  # Opens each of the file paths in filename variable.
        # Reads each of the files in the new variable you've created above and stores into memory.
        pdf_reader = PyPDF2.PdfReader(pdf_file)
        if all_pages:
            for i in range(len(pdf_reader.pages)):
                pdfWriter.add_page(pdf_reader.pages[i])
        else:
            page = pdf_reader.pages[0]  # Documents of only one page, so we are interested in the first
            pdfWriter.add_page(page)  # Adds each of the PDFs it's read to a new page.
    f = open(output_path, 'wb')
    # Writing the output file using the pdfWriter function.
    pdfWriter.write(f)
    f.close()

compact_folder

compact_folder(path_folder)

Gets a path to a folder with only PDF files in it. Read all PDFs and merge them all into a single PDF. obtain parent of path_folder obtain filename of path_folder Remove folder path_folder create merged PDF path_folder + ".pdf"

Source code in source/src/pdf.py
def compact_folder(path_folder):
    """
    Gets a path to a folder with only PDF files in it.
    Read all PDFs and merge them all into a single PDF.
    obtain parent of path_folder
    obtain filename of path_folder
    Remove folder path_folder
    create merged PDF path_folder + ".pdf"
    """
    paths = list_dir(path_folder)
    if len(paths) == 0:
        log.warning("Refusing to compact folder " + path_folder + " because it is empty. Aborting compression.")
        return

    paths.sort()
    for i in range(len(paths)):
        paths[i] = os.path.join(path_folder, paths[i])
    merge_pdfs(paths, path_folder + ".pdf", True)
    shutil.rmtree(path_folder)