PDF4me API'sini temel alarak uygulama geliştirmek için ihtiyacınız olan her şey.
Bir API anahtarı alın, herhangi bir belge işlemi için tek bir REST uç noktasına çağrı yapın ve gönderin. Herhangi bir dildeki belgeleri dönüştürün, OCR uygulayın, birleştirin, oluşturun ve barkodlayın.
Üç adımda yaşayın.
- 1. Anahtarınızı alın. Kontrol panelinden bir hesap oluşturun ve bir API anahtarı oluşturun.
- 2. Bir uç noktayı çağırın. Base64 formatındaki bir belgeyi ve JSON seçeneklerini POST edin.
https://api.pdf4me.com/api/v2/<Action>. - 3. Dosyanızı alın. Yanıt, işlenmiş dosyayı döndürür; uzun süren işlemler, sorgulamak için bir durum URL'si döndürür.
curl -X POST https://api.pdf4me.com/api/v2/ConvertToPdf \
-H "Authorization: Basic YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"docContent": "<base64 file>",
"docName": "input.docx"
}'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 }; GitHub'dan kopyala yapıştır.
Her uç nokta, Node.js, Python, C# ve Java dillerinde çalıştırılabilir bir örnekle birlikte gelir; bu örnekleri bugün klonlayabileceğiniz tek bir depoda bulabilirsiniz. Anahtarınızı ekleyin ve çalıştırın.
pdf4me-api-samples
Node.js, Python, C# ve Java dillerinde çalıştırılabilir, uç nokta bazlı örnekler. Klonlayın, API anahtarınızı girin ve çalıştırın.
GitHub'da açınURL API test cihazı
Tarayıcıdan herhangi bir uç noktayı sıfır kurulumla deneyin, ardından oluşturduğu isteği aynen kopyalayın.
Test cihazını açınTüm depolar ve araçlar
PDF4me platformunun tamamı için örnekler, bağlantı elemanları ve açık kaynaklı araçlar GitHub organizasyonumuzda mevcuttur.
Organizasyonu inceleyinTek bir API, her belge işlemi için.
Bir kategoriyi açarak, her birinin açıklaması ve belgelere bağlantısı bulunan uç noktalarını görebilirsiniz.
Bir API anahtarından daha fazlası.
İlk testten üretime geçişe kadar olan tüm süreç, uç noktalar etrafında şekillenir.
Anahtarlar ve ortamlar
Ortam bazında API anahtarlarını doğrudan kontrol panelinden oluşturun, döndürün ve kapsamlarını belirleyin.
Anahtarları yönetinKullanım ve analiz
Çağrı hacminizi izleyin ve planınıza göre kullanımınızı takip edin, böylece büyük ölçekte hiçbir şey sizi şaşırtmasın.
Varsayılan olarak eşzamansız
Uzun süren işlemler, işlenen dosya hazır olana kadar sorgulayacağınız bir durum URL'si döndürür.
Herhangi bir dil, SDK gerekmez.
Temel kimlik doğrulama başlığı içeren düz HTTPS. Herhangi bir çalışma ortamından çağırılabilir; resmi kütüphaneler isteğe bağlıdır.
Kodsuz bağlantı elemanları
Zapier, Make, Power Automate ve n8n içindeki aynı belge işlemleri geçerlidir.
Bağlantı noktalarına bakın.Her uç nokta için dokümanlar
Her işlem için referans, istek ve yanıt şablonları ve kopyala-yapıştır örnekleri.
Belgeleri okuyunBelgelerinizi 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.
curl -X POST https://api.pdf4me.com/v1/ConvertToPdfÜcretsiz erişim · Kredi kartı gerekmez