CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-py-pdf2

A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

pdf-merging.mddocs/

PDF Merging

Merge multiple PDF files with control over page ranges, bookmarks, document properties, and advanced merging options. The PdfMerger class provides comprehensive PDF combination capabilities.

Capabilities

PdfMerger Class

Main class for merging multiple PDF files with advanced options for page selection, bookmark management, and document structure preservation.

class PdfMerger:
    def __init__(self, strict: bool = False, fileobj: Union[Path, str, bytes] = ""):
        """
        Initialize a PdfMerger instance.

        Args:
            strict: Whether to raise exceptions for correctable problems (default: False)
            fileobj: Optional output file path or object
        """

    def merge(
        self, 
        page_number: int, 
        fileobj, 
        outline_item: str = None, 
        pages = None, 
        import_outline: bool = True
    ) -> None:
        """
        Merge pages from a PDF at a specific position.

        Args:
            page_number (int): Position to insert pages at
            fileobj (str or file-like): PDF file to merge from
            outline_item (str, optional): Bookmark title for merged section
            pages (PageRange or slice, optional): Page range to merge (default: all pages)
            import_outline (bool): Whether to import bookmarks (default: True)
        """

    def append(
        self, 
        fileobj, 
        outline_item: str = None, 
        pages = None, 
        import_outline: bool = True
    ) -> None:
        """
        Append pages from a PDF to the end.

        Args:
            fileobj (str or file-like): PDF file to append from
            outline_item (str, optional): Bookmark title for appended section
            pages (PageRange or slice, optional): Page range to append (default: all pages)
            import_outline (bool): Whether to import bookmarks (default: True)
        """

    def write(self, fileobj) -> None:
        """
        Write the merged PDF to a file.

        Args:
            fileobj (str or file-like): Output file path or object
        """

    def close(self) -> None:
        """Close the merger and release resources."""

    def add_metadata(self, infos: Dict[str, Any]) -> None:
        """
        Add metadata to the merged PDF.

        Args:
            infos (dict): Metadata dictionary with keys like 'Title', 'Author', etc.
        """

    def set_page_layout(self, layout: str) -> None:
        """
        Set the page layout for the merged PDF.

        Args:
            layout: Page layout type
        """

    def set_page_mode(self, mode: PagemodeType) -> None:
        """
        Set the page mode for the merged PDF.

        Args:
            mode (PagemodeType): Page mode type
        """

    def add_outline_item(
        self, 
        title: str, 
        page_number: int, 
        parent: IndirectObject = None,
        color: Tuple[float, float, float] = None,
        bold: bool = False,
        italic: bool = False,
        fit: str = "/Fit",
        *args
    ) -> IndirectObject:
        """
        Add an outline (bookmark) item to the merged PDF.

        Args:
            title (str): Bookmark title
            page_number (int): Target page number
            parent (IndirectObject, optional): Parent bookmark
            color (tuple, optional): RGB color tuple
            bold (bool): Bold text (default: False)
            italic (bool): Italic text (default: False)
            fit (FitType): Fit type for destination

        Returns:
            IndirectObject: Created outline item
        """

    def add_named_destination(self, title: str, page_number: int) -> None:
        """
        Add a named destination to the merged PDF.

        Args:
            title (str): Destination name
            page_number (int): Target page number
        """

Usage Examples

Simple PDF Merging

from PyPDF2 import PdfMerger

# Create merger instance
merger = PdfMerger()

# Append entire files
merger.append("document1.pdf")
merger.append("document2.pdf")
merger.append("document3.pdf")

# Write merged result
merger.write("merged_document.pdf")
merger.close()

Merging Specific Page Ranges

from PyPDF2 import PdfMerger, PageRange

merger = PdfMerger()

# Append specific pages using PageRange
merger.append("document1.pdf", pages=PageRange("1:5"))  # Pages 1-4
merger.append("document2.pdf", pages=PageRange("::2"))  # Every other page
merger.append("document3.pdf", pages=PageRange("10:"))  # Page 10 to end

# Using slice notation
merger.append("document4.pdf", pages=slice(0, 3))  # First 3 pages

merger.write("selective_merge.pdf")
merger.close()

Deprecated Classes

PdfFileMerger (Deprecated)

class PdfFileMerger:
    """DEPRECATED: Use PdfMerger instead. Will be removed in PyPDF2 3.0.0."""

This class is deprecated and should not be used in new code. All functionality has been moved to PdfMerger with the same API.

Install with Tessl CLI

npx tessl i tessl/pypi-py-pdf2

docs

errors-and-utilities.md

index.md

page-manipulation.md

pdf-merging.md

pdf-reading.md

pdf-writing.md

types-and-objects.md

tile.json