Ana içeriğe geç

14,000+ trusted customers

PDF araçları

Her PDF aracı.
Çevrimiçi ve ücretsiz.

PDF dosyalarını doğrudan tarayıcınızda dönüştürün, birleştirin, sıkıştırın, bölün, imzalayın ve düzenleyin. Kurulum veya kayıt gerekmez.

Herhangi bir cihazda çalışan 40'tan fazla araç.

Hali hazırda inşa ettiğiniz yerlerde çalışır.

PDF4me'yu iş yerinizde kullanın.

PDF4me, zaten bulunduğunuz yerde sizinle buluşur: tarayıcınızda, Microsoft Teams'da, Google Workspace'da, otomasyon platformunuzda veya kendi kodunuzda.

Geliştiriciler için

Geliştiriciler için tasarlandı.

Açık kaynak kodlu örneklerimizden doğrudan alınmış, çalıştırılabilir gerçek örnekler. Bir uç nokta ve bir dil seçin,
Dosyanın tamamını kopyalayın ve çalıştırın. API'nin tamamı bu kadar.

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 uç noktaları
  • 15API kategorileri
  • 4Kodsuz platformlar
  • 30+Ücretsiz çevrimiçi araçlar
  • 4Uzantılar
Geliştiriciler için

Tek bir tıklamayla
bir milyon API çağrısına.

Yapay zeka veri çıkarımı

Faturaları ve formları temiz verilere dönüştürün.

PDF4me komutunu bir fatura, makbuz, banka ekstresi veya sözleşmeye yönlendirin ve sistemlerinize kolayca entegre edebileceğiniz yapılandırılmış JSON verisi alın. Bu belge türleri için şablon bakımı yapmanıza gerek yok.

  • Faturalar, makbuzlar, banka ekstreleri, maaş bordroları, sözleşmeler ve daha fazlası için hazır ayrıştırıcılar.
  • Tedarikçi, ürün kalemleri, toplamlar, tarihler ve vergi gibi alanlar JSON formatında döndürülür.
  • Power Automate, Make ve n8n'da yerel işlemler ve REST API'de aynı motor.
Yapay zekâ veri çıkarma yöntemlerini keşfedin.
Belge oluşturma

Şablonlardan ve verilerden dokümanlar oluşturun.

Word veya HTML şablonlarını JSON verilerinizle birleştirerek, tek tek veya toplu olarak PDF veya Word dosyaları oluşturabilirsiniz.

  • Değişkenler, tablolar ve resimler içeren Word (.docx) ve HTML şablonları
  • JSON veri kayıtlarından tekli veya toplu üretim
  • REST API'de aynı üretim işlemleri gerçekleştirilir: Power Automate, Make, n8n ve Zapier.
Belge oluşturmayı keşfedin.
E-fatura

ZUGFeRD numaralı e-faturaları tek bir çağrıda gönderin.

ZUGFeRD hibrit e-faturalarını oluşturun; fatura XML'inin gömülü olduğu tek bir PDF/A-3 dosyası, Almanya'nın B2B zorunluluğu ve EN 16931 ERP sistemleri için hazırdır.

  • Hibrit PDF/A-3 + XML, EN 16931 ve Factur-X uyumlu
  • XML, JSON veya CSV verilerinden BASIC, COMFORT ve EXTENDED uyumluluğu.
  • Power Automate, Make, n8n ve Zapier'daki yerel işlemler ve REST API
ZUGFeRD faturalama sistemini keşfedin
Ayrıştırma ve sınıflandırma

Herhangi bir belge için bir ayrıştırıcı oluşturun.

Kendi alan şemanızı tanımlayın ve tam olarak ihtiyacınız olanı çıkarın veya PDF4me'nun karışık grupları otomatik olarak sınıflandırmasına ve her belgeyi türüne göre yönlendirmesine izin verin.

  • Kendi JSON şemanıza ayrıştırın veya belge türüne göre otomatik olarak sınıflandırın.
  • Geliştirici kontrol panelinde oluşturulmuş özel analiz şablonları.
  • Karışık belge gruplarını yönlendirmek için güven puanları
Keşfet, ayrıştır ve sınıflandır
Word ve Excel otomasyonu

Word ve Excel'yu büyük ölçekte otomatikleştirin.

Word ve Excel'yu PDF'ya ve tersine dönüştürün, ardından Office dosyalarını birleştirin, bölün, filigran ekleyin ve parola ile koruyun; tüm bunları Office kurulumu gerektirmeden tek bir API üzerinden yapın.

  • Word'dan PDF'ya, Excel'dan PDF'ya ve PDF'dan tekrar Word veya Excel'ya
  • Word dosyalarını birleştirin, bölün ve karşılaştırın; Excel satırlarını ekleyin, güncelleyin ve çıkarın.
  • Word ve Excel dosyalarına filigran ve parola koruması ekleyin.
Word ve Excel'yu keşfedin
Barkodlar

Barkod okuma, oluşturma ve barkoda göre bölme.

QR, Code 128, Data Matrix ve 50'den fazla barkod türü oluşturun ve yerleştirin, bunları PDF'lerden ve resimlerden okuyun veya belge gruplarını barkod ayırıcılarla bölün.

  • QR ve Data Matrix dahil olmak üzere 50'den fazla barkod türü oluşturun ve yerleştirin.
  • PDF ve resimlerden barkodları ve Swiss QR kodlarını okuyun.
  • Swiss QR ve EPC/SEPA faturaları, ayrıca barkoda göre bölünmüş PDF
Barkodları keşfedin
Güven ve güvenlik

Belgeleriniz güvenli ellerde.

Gizlilik ve güvenlik sonradan eklenmiş değil, bütünleşik olarak sunulmaktadır. İsviçre merkezli PDF4me, tarayıcıda tek bir dosyayı dönüştürseniz de API aracılığıyla milyonlarca dosyayı işleseniz de aynı veri işleme kurallarını uygular.

İşlem sonrasında dosyalar silindi.

Yüklenen dosyalar, izole edilmiş bulut depolama alanında şifrelenir ve çevrimiçi araçlarda bir saat içinde veya API işlemi tamamlandıktan sonra birkaç dakika içinde otomatik olarak silinir. Paylaşım bağlantıları 14 gün sonra geçerliliğini yitirir. Yalnızca "Belgelerim"e açıkça kaydettiğiniz dosyaları saklarız.

Yapay zekâyı eğitmek için hiç kullanılmadı.

Belge içeriğiniz hiçbir zaman model eğitimi için, ne bizim ne de başkasınınki için saklanmaz. Yapay zeka çıkarımı yalnızca istek sırasında tanımladığınız şema üzerinde çalışır. Bize gönderdiğiniz dosyaları işlemez, analiz etmez veya yeniden satmayız.

Veri İşleme Sözleşmesi

Satın alma veya GDPR incelemeleri için bir Veri Koruma Sözleşmesine mi ihtiyacınız var? PDF4me sözleşmesini ve işleme ve güvenlik eklerini indirin. Satış sürecini beklemeden bunları hukuk departmanınızla paylaşın.

Uçtan uca şifrelenmiş

Her tarayıcı yüklemesi, API çağrısı ve indirme işlemi HTTPS/TLS üzerinden gerçekleşir. Bir dosya işlenmek üzere bekletilirken şifrelenmiş halde kalır, kiracıdan bağımsızdır ve yalnızca işlem süresince bellekte tutulur.

ISO 27001 çalışmaları devam ediyor.In progress

Resmi bir ISO/IEC 27001 bilgi güvenliği yönetim sistemi uyguluyoruz: belgelenmiş politikalar, rol tabanlı erişim, değişiklik kontrolü, olay müdahalesi ve tedarikçi gözetimi; 2026 yılı için bağımsız bir denetim hedefleniyor.

Üretim için tasarlandı

Günlük kullanım için PDF araçları ve SDK'lar, otomasyon bağlantı elemanları (Make, Zapier, Power Automate, n8n) ve MCP içeren bir üretim REST API'si için tek bir platform. Şirket içinde bir PDF yığını oluşturmadan, belge özelliklerini ürününüzde kullanıma sunun.

PDF araçları

Tüm PDF araçlarına tek tıkla ulaşabilirsiniz.

Tarayıcınızda ücretsiz olarak dönüştürün, düzenleyin, birleştirin, sıkıştırın, imzalayın ve OCR yapın. Kurulum veya kayıt gerekmez.

Tüm 33 araçlarına göz atın Buradaki her araç aynı zamanda bir API'dir.
Fiyatlandırma

Yalnızca işlediğiniz miktar için ödeme yapın.

API ile ücretsiz başlayın, ardından süresi dolmayan ön ödemeli paketlerle yükleme yapın. Tek seferlik ödeme, taahhüt yok ve her paket aylık plana eklenir.

Denemek için
$25tek seferlik

500 API çağrıları

Çağrı başına yaklaşık $0.050. Kredilerin süresi asla dolmaz.

  • Tek seferlik ödeme
  • Herhangi bir plana göre yığınlar
  • Belge başına 1 çağrı
500 paketini edinin
Küçük projeler için
$45tek seferlik

1,000 API çağrıları

Çağrı başına yaklaşık $0.045. Kredilerin süresi asla dolmaz.

  • Tek seferlik ödeme
  • Herhangi bir plana göre yığınlar
  • Belge başına 1 çağrı
1,000 paketini edinin
Hafif otomasyon için
$95tek seferlik

2,500 API çağrıları

Çağrı başına yaklaşık $0.038. Kredilerin süresi asla dolmaz.

  • Tek seferlik ödeme
  • Herhangi bir plana göre yığınlar
  • Belge başına 1 çağrı
2,500 paketini edinin
Ekipleri büyütmek için
$330tek seferlik

10,000 API çağrıları

Çağrı başına yaklaşık $0.033. Kredilerin süresi asla dolmaz.

  • Tek seferlik ödeme
  • Herhangi bir plana göre yığınlar
  • Belge başına 1 çağrı
10,000 paketini edinin
Yüksek hacimli ürünler için
$650tek seferlik

25,000 API çağrıları

Çağrı başına yaklaşık $0.026. Kredilerin süresi asla dolmaz.

  • Tek seferlik ödeme
  • Herhangi bir plana göre yığınlar
  • Belge başına 1 çağrı
25,000 paketini edinin
Yüksek hacimli ürünler için
Geleneksatış ekibiyle iletişime geçin

25.000'den fazla API çağrısı

En büyük ön ödemeli paketimizden daha fazlasına mı ihtiyacınız var? Özel toplu fiyatlandırma, faturalama koşulları ve özel destek için satış ekibimizle iletişime geçin.

  • Toplu alımlarda indirimler mevcuttur.
  • Özel hesap desteği
  • Esnek faturalama koşulları
Satış ekibiyle görüşün.

Belge başına bir API çağrısı. Yüksek kaliteli dönüştürmeler, OCR ve yapay zeka özellikleri sayfa başına bir çağrı olarak sayılır. Aylık plana mı yoksa ücretsiz sürüme mi ihtiyacınız var? Tüm detaylar fiyatlandırma sayfasında.

Tüm fiyatlandırma ve API çağrı maliyetlerini inceleyin.

Belgelerinizi tamamlayın.

API ile ürününüze entegre edin, kod yazmadan otomatikleştirin veya tarayıcınızdaki ücretsiz araçları kullanın. Başlamak için kredi kartına gerek yok.

Tek bir aramayla başlayıncurl -X POST https://api.pdf4me.com/v1/ConvertToPdf

Ücretsiz erişim · Kredi kartı gerekmez