## pdf

PdfPackage Interface

Das PdfPackage-Interface bietet Funktionen zur Erzeugung und Manipulation von PDF-Dateien. Es enthält folgende Methoden:

-   `fromHTML(html: string, options?: {}): an`:
    Diese Methode nimmt einen HTML-String und optionale Einstellungen entgegen und gibt die binären Daten eines PDF-Dokuments zurück. Mit dieser Methode können Sie ein PDF-Dokument aus HTML-Inhalten erstellen. Die optionalen Einstellungen ermöglichen es Ihnen, verschiedene Aspekte des PDF-Dokuments zu steuern, einschließlich der Ausrichtung, Seitengröße, Ränder, Kopf- und Fußzeilen und vieles mehr.

-   `cpu(command: "watermark" | "stamp" | "merge" | "rotate" | "create", pdfData: any | any[], options?: {}): any`:
    Diese Methode nimmt einen Befehl, PDF-Daten und optionale Einstellungen entgegen und gibt die binären Daten eines neuen PDF-Dokuments zurück. Mit dieser Methode können Sie verschiedene Operationen auf einem oder mehreren PDF-Dokumenten durchführen, einschließlich:

    -   `watermark`: Fügen Sie ein Wasserzeichen zum PDF hinzu.
    -   `stamp`: Fügen Sie einen Stempel zum PDF hinzu.
    -   `merge`: Kombinieren Sie mehrere PDF-Dokumente zu einem.
    -   `rotate`: Drehen Sie Seiten im PDF.
    -   `create`: Erstellen Sie ein neues PDF.

    Die pdfData-Parameter können die binären Daten eines einzelnen PDF-Dokuments, ein Array von PDF-Dokumenten (zum Zusammenführen) oder ein Objekt mit einer Beschreibung (zum Erstellen) enthalten. Die optionalen Einstellungen variieren je nach Befehl und ermöglichen es Ihnen, verschiedene Aspekte der Operation zu steuern.

```ts
interface PdfPackage {
    /**
     * generate pdf from html
     *
     * @param html html string
     * @param options options
     *
     * @returns []byte of pdf data
     */
    fromHTML(
        html: string,
        options?: {
            copies?: number // Number of copies to print into the pdf file (default 1)
            dpi?: number // Change the dpi explicitly (this has no effect on X11 based systems)
            grayscale?: boolean // PDF will be generated in grayscale
            imageDpi?: number // When embedding images scale them down to this dpi (default 600)
            imageQuality?: number // When jpeg compressing images use this quality (default 94)
            lowQuality?: boolean // Generates lower quality pdf/ps. Useful to shrink the result document space
            marginBottom?: number // Set the page bottom margin
            marginLeft?: number // Set the page left margin (default 10mm)
            marginRight?: number // Set the page right margin (default 10mm)
            marginTop?: number // Set the page top margin
            noCollate?: boolean // Do not collate when printing multiple copies (default collate)
            noPdfCompression?: boolean // Do not use lossless compression on pdf objects
            orientation?: "Portrait" | "Landscape" // Set orientation to Landscape or Portrait (default Portrait)
            pageHeight?: number // Page height
            pageSize?: string // Set paper size to: A4, Letter, etc. (default A4)
            pageWidth?: number // Page width
            title?: string // The title of the generated pdf file (The title of the first document is used if not specified)
            // page settings
            printMediaType?: boolean // Use print media-type instead of screen
            footerCenter?: string // Centered footer text
            footerFontName?: string // Set footer font name (default Arial)
            footerFontSize?: number // Set footer font size (default 12)
            footerLeft?: string // Left aligned footer text
            footerLine?: boolean // Display line above the footer
            footerRight?: string // Right aligned footer text
            footerSpacing?: number // Spacing between footer and content in mm (default 0)
            footerHTML?: string // URL to footer html
            headerCenter?: string // Centered header text
            headerFontName?: string // Set header font name (default Arial)
            headerFontSize?: number // Set header font size (default 12)
            headerLeft?: string // Left aligned header text
            headerLine?: boolean // Display line below the header
            headerRight?: string // Right aligned header text
            headerSpacing?: number // Spacing between header and content in mm (default 0)
            headerHTML?: string // URL to header html
        }
    ): any

    /**
     * process existing pdf data
     *
     * @param command pdfcpu command
     * @param pdfData []byte of pdf data, multiple []byte as array of pdf's to merge or object with description to create
     * @param options options
     *
     * @returns []byte of new pdf data
     */
    cpu(
        command: "watermark" | "stamp" | "merge" | "rotate" | "create",
        pdfData: any | any[],
        options?: {
            pages?: (string | number)[]
            description?: {
                fontname?: string
                points?: number
                rtl?: boolean
                position?: "full" | "tl" | "tc" | "tr" | "l" | "c" | "r" | "bl" | "bc" | "br"
                offset?: string
                scalefactor?: number | string
                aligntext?: "left" | "center" | "right" | "justified"
                strokecolor?: string
                fillcolor?: string
                backgroundcolor?: string
                rotation?: number
                diagonal?: 1 | 2
                opacity?: number
                rendermode?: 0 | 1 | 2
                margins?: number | string
                border?: number | string
                url?: string
            }
            mode?: "text" | "image" | "pdf"
            bytes?: any // []byte of watermark image
            file?: string // file for pdf watermark
            text?: string // text for text watermark
            rotation?: number
        }
    ): any
}
```
