Zum Hauptinhalt springen

14,000+ trusted customers

PDF-Tools

Jedes PDF-Werkzeug.
Online und kostenlos.

PDFs direkt im Browser konvertieren, zusammenführen, komprimieren, teilen, signieren und bearbeiten. Keine Installation, keine Registrierung erforderlich.

Mehr als 40 Tools, die auf jedem Gerät funktionieren.

Funktioniert dort, wo Sie bereits bauen

Verwenden Sie PDF4me direkt an Ihrem Arbeitsplatz.

PDF4me holt Sie dort ab, wo Sie sich bereits befinden: in Ihrem Browser, Microsoft Teams, Google Workspace, Ihrer Automatisierungsplattform oder Ihrem eigenen Code.

Für Entwickler

Entwickelt für Entwickler.

Echte, ausführbare Beispiele direkt aus unseren Open-Source-Beispielen. Wählen Sie einen Endpunkt und eine Sprache,
Kopieren Sie die gesamte Datei und führen Sie sie aus. Das ist die gesamte API.

const fs = require('fs');
const path = require('path');

/**
 * Document to PDF Converter using PDF4Me API
 * Converts various document formats (DOCX, XLSX, etc.) to PDF documents
 * Supports both synchronous and asynchronous processing with retry logic
 */

// API Configuration - PDF4Me service for converting documents to PDF
const API_KEY = "get the API key from https://dev.pdf4me.com/dashboard/#/api-keys/";
const BASE_URL = "https://api.pdf4me.com/";
const API_ENDPOINT = `${BASE_URL}api/v2/ConvertToPdf`;

// File paths configuration
const INPUT_DOC_PATH = "sample.docx";           // Path to input document file
const OUTPUT_PDF_PATH = "Document_to_PDF_output.pdf"; // Output PDF file name

// Retry configuration for async processing
const MAX_RETRIES = 10;
const RETRY_DELAY = 10000; // 10 seconds in milliseconds

/**
 * Main function that orchestrates the document to PDF conversion process
 * Handles file validation, conversion, and result processing
 */
async function convertDocumentToPdf() {
    console.log("Starting Document to PDF Conversion Process...");
    console.log("This converts various document formats (DOCX, XLSX, etc.) to PDF");
    console.log("Supports Word documents, Excel spreadsheets, and other formats");
    console.log("-".repeat(60));

    try {
        // Validate input file exists
        if (!fs.existsSync(INPUT_DOC_PATH)) {
            throw new Error(`Input document file not found: ${INPUT_DOC_PATH}`);
        }

        console.log(`Converting: ${INPUT_DOC_PATH} → ${OUTPUT_PDF_PATH}`);

        // Process the conversion
        const result = await processDocumentToPdfConversion();

        // Handle the result
        await handleConversionResult(result);

    } catch (error) {
        console.error("Conversion failed:", error.message);
        process.exit(1);
    }
}

/**
 * Core conversion logic - handles the API request and response processing
 * Supports both synchronous (200) and asynchronous (202) responses
 */
async function processDocumentToPdfConversion() {
    // Read and encode document file to base64
    console.log("Reading and encoding document file...");
    const docContent = fs.readFileSync(INPUT_DOC_PATH);
    const docBase64 = docContent.toString('base64');
    console.log("Document file successfully encoded to base64");

    // Prepare the conversion payload
    const payload = {
        docContent: docBase64,           // Base64 encoded document content
        docName: "output",               // Name for the output file
        async: true                      // Enable asynchronous processing
    };

    // Set up HTTP headers for authentication and content type
    const headers = {
        "Authorization": `Basic ${API_KEY}`,
        "Content-Type": "application/json"
    };

    console.log("Sending request to PDF4Me API...");

    // Make the initial API request
    const response = await fetch(API_ENDPOINT, {
        method: 'POST',
        headers: headers,
        body: JSON.stringify(payload)
    });

    console.log(`Status code: ${response.status}`);

    // Handle different response scenarios
    if (response.status === 202) {
        // Asynchronous processing - poll for completion
        console.log("Request accepted. PDF4Me is processing asynchronously...");
        
        const locationUrl = response.headers.get('Location');
        if (!locationUrl) {
            throw new Error("No 'Location' header found in the response for polling");
        }

        return await pollForCompletion(locationUrl, headers);

    } else if (response.status === 200) {
        // Synchronous processing - immediate result
        console.log("Document to PDF conversion completed immediately!");
        return await response.arrayBuffer();

    } else {
        // Error response
        const errorText = await response.text();
        throw new Error(`API request failed. Status: ${response.status}, Response: ${errorText}`);
    }
}

/**
 * Handles the conversion result and saves the PDF file
 * Supports both binary PDF data and base64 encoded responses
 */
async function handleConversionResult(result) {
    try {
        // Convert ArrayBuffer to Buffer for file operations
        const buffer = Buffer.from(result);
        
        // Validate that we have a PDF (check for PDF header)
        if (buffer.length > 4 && buffer.toString('ascii', 0, 4) === '%PDF') {
            console.log("Response is a valid PDF file");
            fs.writeFileSync(OUTPUT_PDF_PATH, buffer);
            console.log(`PDF saved successfully to: ${OUTPUT_PDF_PATH}`);
            console.log("Document has been converted to PDF format");
            return;
        }

        // Try to parse as JSON if not a direct PDF
        try {
            const jsonResponse = JSON.parse(buffer.toString());
            console.log("Successfully parsed JSON response");
            
            // Look for PDF data in different possible JSON locations
            let pdfBase64 = null;
            if (jsonResponse.document && jsonResponse.document.docData) {
                pdfBase64 = jsonResponse.document.docData;  // Common location 1
            } else if (jsonResponse.docData) {
                pdfBase64 = jsonResponse.docData;           // Common location 2
            } else if (jsonResponse.data) {
                pdfBase64 = jsonResponse.data;              // Alternative location
            }

            if (pdfBase64) {
                // Decode base64 PDF data and save to file
                const pdfBytes = Buffer.from(pdfBase64, 'base64');
                fs.writeFileSync(OUTPUT_PDF_PATH, pdfBytes);
                console.log(`PDF saved to ${OUTPUT_PDF_PATH}`);
                console.log("Document has been converted to PDF format");
            } else {
                console.log("No PDF data found in the response.");
                console.log("Full response:", JSON.stringify(jsonResponse, null, 2));
            }

        } catch (jsonError) {
            console.log("Failed to parse JSON response, treating as binary data");
            // If JSON parsing fails, try to save as binary anyway
            if (buffer.length > 1000) {
                fs.writeFileSync(OUTPUT_PDF_PATH, buffer);
                console.log(`PDF saved to ${OUTPUT_PDF_PATH} (as binary data)`);
                console.log("Document has been converted to PDF format");
            } else {
                console.log("Warning: Response doesn't appear to be a valid PDF");
                console.log(`First 100 bytes: ${buffer.toString('hex', 0, 100)}`);
            }
        }

    } catch (error) {
        throw new Error(`Error saving PDF: ${error.message}`);
    }
}

/**
 * Polls the API for async completion with retry logic
 * Handles 202 (processing) and 200 (completed) status codes
 */
async function pollForCompletion(locationUrl, headers) {
    console.log(`Polling URL: ${locationUrl}`);

    for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
        console.log(`Waiting for result... (Attempt ${attempt}/${MAX_RETRIES})`);
        
        // Wait before polling (except on first attempt)
        if (attempt > 1) {
            await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
        }

        try {
            const response = await fetch(locationUrl, {
                method: 'GET',
                headers: headers
            });

            if (response.status === 200) {
                // Conversion completed successfully
                console.log("Document to PDF conversion completed successfully!");
                return await response.arrayBuffer();

            } else if (response.status === 202) {
                // Still processing, continue polling
                console.log("Still processing...");
                continue;

            } else {
                // Error occurred during processing
                const errorText = await response.text();
                throw new Error(`Unexpected error during polling: ${response.status}, Response: ${errorText}`);
            }

        } catch (error) {
            if (attempt === MAX_RETRIES) {
                throw new Error(`Polling failed after ${MAX_RETRIES} attempts: ${error.message}`);
            }
            console.log(`Polling attempt ${attempt} failed: ${error.message}`);
        }
    }

    throw new Error(`Timeout: Document to PDF conversion did not complete after ${MAX_RETRIES} retries`);
}

// Main execution - Run the conversion when script is executed directly
if (require.main === module) {
    convertDocumentToPdf().catch(error => {
        console.error("Fatal error:", error.message);
        process.exit(1);
    });
}

module.exports = { convertDocumentToPdf, processDocumentToPdfConversion, handleConversionResult }; 
  • 100API-Endpunkte
  • 15API-Kategorien
  • 4No-Code-Plattformen
  • 30+Kostenlose Online-Tools
  • 4Erweiterungen
Für Entwickler

Mit einem einzigen Klick
bis zu einer Million API-Aufrufe.

KI-Datenextraktion

Rechnungen und Formulare in saubere Daten umwandeln.

Richten Sie PDF4me auf eine Rechnung, Quittung, einen Kontoauszug oder einen Vertrag und erhalten Sie strukturiertes JSON zurück, das Sie direkt in Ihre Systeme einfügen können. Für diese Dokumenttypen müssen keine Vorlagen gepflegt werden.

  • Vorgefertigte Parser für Rechnungen, Quittungen, Kontoauszüge, Gehaltsabrechnungen, Verträge und mehr
  • Felder wie Lieferant, Positionen, Summen, Datum und Steuer werden als JSON zurückgegeben.
  • Native Aktionen in Power Automate, Make und n8n sowie dieselbe Engine in der REST-API
KI-Datenextraktion erforschen
Dokumentenerstellung

Dokumente aus Vorlagen und Daten generieren.

Führen Sie Word- oder HTML-Vorlagen mit Ihrem JSON zusammen, um PDF- oder Word-Dateien zu erzeugen, entweder einzeln oder in großen Mengen.

  • Word (.docx)- und HTML-Vorlagen mit Variablen, Tabellen und Bildern
  • Einzel- oder Massengenerierung aus JSON-Datensätzen
  • Die gleichen Generierungsaktionen auf der REST-API, Power Automate, Make, n8n und Zapier
Dokumentenerstellung erkunden
Elektronische Rechnungsstellung

Versenden Sie ZUGFeRD-E-Rechnungen in einem Anruf.

Generieren Sie hybride E-Rechnungen im Format ZUGFeRD, eine PDF/A-3-Datei mit eingebettetem Rechnungs-XML, die für die B2B-Vorschrift in Deutschland und jedes EN 16931 ERP-System geeignet sind.

  • Hybrid PDF/A-3 + XML, EN 16931 und Factur-X ausgerichtet
  • BASIC-, COMFORT- und EXTENDED-Konformität, ausgehend von XML-, JSON- oder CSV-Daten
  • Native Aktionen in Power Automate, Make, n8n und Zapier sowie die REST-API
ZUGFeRD-Rechnungsstellung erkunden
Analysieren und klassifizieren

Erstellen Sie einen Parser für beliebige Dokumente.

Definieren Sie Ihr eigenes Feldschema und extrahieren Sie genau das, was Sie benötigen, oder lassen Sie PDF4me gemischte Stapel automatisch klassifizieren und jedes Dokument nach seinem Typ weiterleiten.

  • In Ihr eigenes JSON-Schema parsen oder automatisch nach Dokumenttyp klassifizieren.
  • Benutzerdefinierte Analysevorlagen, die im Entwickler-Dashboard integriert sind
  • Vertrauenswerte für die Weiterleitung gemischter Dokumentenstapel
Erkunden, analysieren und klassifizieren
Word & Excel Automatisierung

Automatisieren Sie Word und Excel im großen Maßstab.

Konvertieren Sie Word- und Excel-Dateien in PDF-Dateien und zurück, führen Sie anschließend Office-Dateien zusammen, teilen Sie sie auf, versehen Sie sie mit Wasserzeichen und schützen Sie sie mit einem Passwort – alles über eine einzige API, ohne dass eine Office-Installation erforderlich ist.

  • Word zu PDF, Excel zu PDF und PDF zurück zu Word oder Excel
  • Zusammenführen, Aufteilen und Vergleichen von Word-Dateien; Hinzufügen, Aktualisieren und Extrahieren von Excel-Zeilen
  • Word- und Excel-Dateien mit Wasserzeichen und Passwort schützen
Entdecken Sie Word & Excel
Barcodes

Lesen, erstellen und nach Barcode aufteilen.

Generieren und betten Sie QR-Codes, Code 128, Data Matrix und über 50 weitere Barcode-Typen ein, lesen Sie diese aus PDFs und Bildern aus oder teilen Sie Dokumentenstapel anhand von Barcode-Trennzeichen auf.

  • Erstellen und einbetten Sie über 50 Barcode-Typen, darunter QR und Data Matrix.
  • Barcodes und Swiss QR-Codes aus PDFs und Bildern lesen
  • Swiss QR- und EPC/SEPA-Rechnungen sowie aufgeteilte PDF-Rechnungen nach Barcode
Barcodes erkunden
Vertrauen und Sicherheit

Ihre Dokumente sind in sicheren Händen.

Datenschutz und Sicherheit sind integriert, nicht nachträglich hinzugefügt. Das in der Schweiz ansässige Unternehmen PDF4me wendet dieselben Regeln für den Umgang mit Daten an, egal ob Sie eine Datei im Browser konvertieren oder Millionen über die API verarbeiten.

Nach der Verarbeitung gelöschte Dateien

Uploads werden im Ruhezustand verschlüsselt in einem isolierten Cloud-Speicher abgelegt und anschließend innerhalb einer Stunde über Online-Tools oder innerhalb weniger Minuten nach Abschluss eines API-Jobs automatisch gelöscht. Freigabelinks sind 14 Tage gültig. Wir speichern nur die Dateien, die Sie explizit in „Meine Dokumente“ speichern.

Nie zum Trainieren von KI verwendet

Ihre Dokumentinhalte werden niemals für das Modelltraining – weder für unser noch für das von Dritten – gespeichert. Die KI-Extraktion basiert ausschließlich auf dem Schema, das Sie bei der Anfrage definieren. Wir analysieren, extrahieren oder verkaufen die von Ihnen gesendeten Dateien nicht weiter.

Datenverarbeitungsvereinbarung

Benötigen Sie eine Datenschutzvereinbarung für Beschaffungs- oder DSGVO-Prüfungen? Laden Sie die PDF4me-Vereinbarung sowie die Anhänge zu Verarbeitung und Sicherheit herunter. Teilen Sie diese direkt mit der Rechtsabteilung, ohne auf einen Vertriebsthread warten zu müssen.

Ende-zu-Ende-verschlüsselt

Jeder Browser-Upload, API-Aufruf und Download erfolgt über HTTPS/TLS. Während eine Datei zur Verarbeitung gespeichert wird, bleibt sie im Ruhezustand verschlüsselt, mandantenisoliert und wird nur für die Dauer des jeweiligen Vorgangs im Speicher gehalten.

ISO 27001 im GangeIn progress

Wir implementieren ein formales Informationssicherheitsmanagementsystem nach ISO/IEC 27001: dokumentierte Richtlinien, rollenbasierte Zugriffskontrolle, Änderungskontrolle, Reaktion auf Sicherheitsvorfälle und Lieferantenüberwachung. Für 2026 ist ein unabhängiges Audit geplant.

Für die Produktion entwickelt

Eine Plattform für alltägliche PDF-Tools und eine produktionsreife REST-API mit SDKs, Automatisierungskonnektoren (Make, Zapier, Power Automate, n8n) und MCP. Integrieren Sie Dokumentfunktionen in Ihr Produkt, ohne einen eigenen PDF-Stack entwickeln zu müssen.

PDF-Tools

Alle PDF-Tools sind nur einen Klick entfernt.

Konvertieren, bearbeiten, zusammenführen, komprimieren, signieren und OCR nutzen – kostenlos im Browser. Keine Installation, keine Registrierung.

Alle 33-Tools anzeigen Jedes Tool hier ist gleichzeitig auch eine API.
Preisgestaltung

Sie zahlen nur für das, was Sie verarbeiten.

Nutzen Sie die API kostenlos und laden Sie anschließend Guthabenpakete auf, die unbegrenzt gültig sind. Einmalige Zahlung, keine Vertragsbindung – alle Pakete sind in einem Monatsabo kombinierbar.

Zum Ausprobieren
$25einmalig

500 API-Aufrufe

Etwa $0.050 pro Anruf. Guthaben verfällt nicht.

  • Einmalzahlung
  • Stapelbar auf jedem Tarif
  • 1 Anruf pro Dokument
Hol dir das 500-Paket
Für kleine Projekte
$45einmalig

1,000 API-Aufrufe

Etwa $0.045 pro Anruf. Guthaben verfällt nicht.

  • Einmalzahlung
  • Stapelbar auf jedem Tarif
  • 1 Anruf pro Dokument
Hol dir das 1,000-Paket
Für die Lichtautomation
$95einmalig

2,500 API-Aufrufe

Etwa $0.038 pro Anruf. Guthaben verfällt nicht.

  • Einmalzahlung
  • Stapelbar auf jedem Tarif
  • 1 Anruf pro Dokument
Hol dir das 2,500-Paket
Für skalierende Teams
$330einmalig

10,000 API-Aufrufe

Etwa $0.033 pro Anruf. Guthaben verfällt nicht.

  • Einmalzahlung
  • Stapelbar auf jedem Tarif
  • 1 Anruf pro Dokument
Hol dir das 10,000-Paket
Für hohes Volumen
$650einmalig

25,000 API-Aufrufe

Etwa $0.026 pro Anruf. Guthaben verfällt nicht.

  • Einmalzahlung
  • Stapelbar auf jedem Tarif
  • 1 Anruf pro Dokument
Hol dir das 25,000-Paket
Für hohes Volumen
BrauchKontaktieren Sie den Vertrieb.

Mehr als 25.000 API-Aufrufe

Benötigen Sie mehr als unser größtes Prepaid-Paket? Kontaktieren Sie unseren Vertrieb für individuelle Mengenpreise, Zahlungsbedingungen und persönlichen Support.

  • Mengenrabatte verfügbar
  • Persönlicher Account-Support
  • Flexible Zahlungsbedingungen
Sprechen Sie mit dem Vertrieb.

Ein API-Aufruf pro Dokument. Hochwertige Konvertierungen, OCR und KI-Funktionen zählen als ein Aufruf pro Seite. Benötigen Sie ein Monatsabo oder die kostenlose Version? Alle Informationen finden Sie auf der vollständigen Preisseite.

Die vollständige Preisliste und die Kosten für API-Aufrufe finden Sie hier.

Erledigen Sie Ihre Dokumente.

Integrieren Sie es mit der API in Ihr Produkt, automatisieren Sie es ohne Programmierung oder nutzen Sie die kostenlosen Tools in Ihrem Browser. Keine Kreditkarte erforderlich.

Beginnen Sie mit einem einzigen Anrufcurl -X POST https://api.pdf4me.com/v1/ConvertToPdf

Kostenloses Angebot · Keine Kreditkarte erforderlich