API-Dokumentation
Alles, was Sie zur Integration von WebPDF.app in Ihre Projekte benötigen.
Erste Schritte
WebPDF.app bietet eine einfache REST-API zur Konvertierung von HTML in PDF. Folgen Sie diesen Schritten, um in weniger als 5 Minuten zu starten.
Konto erstellen
Kostenlos registrieren um Zugang zum Dashboard zu erhalten.
API-Schlüssel generieren
Gehen Sie im Dashboard zu "API Keys" und erstellen Sie einen neuen Schlüssel.
Erste Anfrage stellen
Verwenden Sie Ihren API-Schlüssel, um Anfragen an den Endpunkt zu authentifizieren. /v1/generate.
curl -X POST https://api.webpdf.app/v1/generate \
-H "Content-Type: application/json" \
-d '{"apiKey": "YOUR_API_KEY", "url": "https://example.com"}' \
--output document.pdf
Authentifizierung
Alle API-Anfragen müssen Ihren API-Schlüssel im JSON-Body enthalten.
API-Key Authentifizierung
Fügen Sie das Feld apiKey in Ihren JSON-Body ein.
{
"apiKey": "wpdf_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"url": "https://example.com"
}
Endpunkt /generate
https://api.webpdf.app/v1/generate
Konvertiert eine Webseite oder HTML-Inhalt in ein PDF-Dokument.
Request-Body (JSON)
| Parameter | Typ | Beschreibung |
|---|---|---|
apiKey |
string | API-Schlüssel zur Authentifizierung |
url |
string | URL der Webseite. Erforderlich, wenn html nicht angegeben ist. |
html |
string | Direkter HTML-Inhalt. Erforderlich, wenn url nicht angegeben ist. |
format |
string | Seitenformat: "Letter", "Legal", "A4" etc. (Standard: "A4") |
landscape |
boolean | Querformat: true für Querformat (Standard: false) |
marginTop |
integer | Oberer Rand in Pixeln (Standard: 0) |
marginRight |
integer | Rechter Rand in Pixeln (Standard: 0) |
marginBottom |
integer | Unterer Rand in Pixeln (Standard: 0) |
marginLeft |
integer | Linker Rand in Pixeln (Standard: 0) |
width |
integer | Benutzerdefinierte Breite in Pixeln (überschreibt format) |
height |
integer | Benutzerdefinierte Höhe in Pixeln (überschreibt format) |
media |
string | CSS-Medientyp: "screen" oder "print" (Standard: "screen") |
{
"apiKey": "your-api-key-here",
"url": "https://example.com",
"format": "A4",
"landscape": false,
"marginTop": 10,
"marginRight": 10,
"marginBottom": 10,
"marginLeft": 10,
"media": "print"
}
Verfügbare Parameter
Die folgenden Parameter können im JSON-Body Ihrer POST-Anfrage gesendet werden.
| Parameter | docs.options.type | Standard | docs.options.description |
|---|---|---|---|
format |
string | "A4" | Seitenformat (Letter, Legal, Tabloid, Ledger, A0-A6) |
width |
string | - | Benutzerdefinierte Breite in Pixeln |
height |
string | - | Benutzerdefinierte Höhe in Pixeln |
landscape |
boolean | false | Querformat: true für Querformat |
margin |
object | 0 | Ränder (marginTop, marginRight, marginBottom, marginLeft) |
printBackground |
boolean | true | CSS-Medientyp: "screen" oder "print" |
scale |
integer | 1 | Hinweis: Mindestens url oder html muss angegeben werden. Wenn beides angegeben ist, wird html verwendet. |
displayHeaderFooter |
boolean | false | Header und Footer anzeigen |
headerTemplate |
string | - | HTML-Vorlage für den Header |
footerTemplate |
string | - | HTML-Vorlage für den Footer |
pageRanges |
string | - | Seitenbereiche (z.B. "1-5, 8") |
waitForSelector |
string | - | CSS-Selektor, auf den vor dem Rendern gewartet werden soll |
waitForTimeout |
integer | 0 | Zusätzliche Wartezeit in Millisekunden |
Code-Beispiele
Kopieren Sie diese Beispiele, um schnell in Ihrer bevorzugten Sprache zu starten.
// Node.js / JavaScript
const generatePdf = async () => {
const response = await fetch('https://api.webpdf.app/v1/generate', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
apiKey: process.env.WEBPDF_API_KEY,
url: 'https://example.com',
format: 'A4',
landscape: false
})
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(`HTTP ${response.status}: ${errorText}`);
}
const pdfBuffer = await response.arrayBuffer();
return Buffer.from(pdfBuffer);
};
// Usage
const pdf = await generatePdf();
fs.writeFileSync('output.pdf', pdf);
# Python
import requests
import os
def generate_pdf(url_to_convert):
api_url = "https://api.webpdf.app/v1/generate"
payload = {
"apiKey": os.environ.get('WEBPDF_API_KEY'),
"url": url_to_convert,
"format": "A4",
"landscape": False
}
headers = {"Content-Type": "application/json"}
response = requests.post(api_url, json=payload, headers=headers)
if response.status_code == 200:
return response.content
else:
print(f"Errore: {response.status_code} - {response.text}")
return None
# Usage
pdf_bytes = generate_pdf("https://example.com")
if pdf_bytes:
with open("output.pdf", "wb") as f:
f.write(pdf_bytes)
// PHP
<?php
function generatePdf($url) {
$apiKey = getenv('WEBPDF_API_KEY');
$data = [
'apiKey' => $apiKey,
'url' => $url,
'format' => 'A4',
'landscape' => false
];
$ch = curl_init('https://api.webpdf.app/v1/generate');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
'Content-Type: application/json'
]
]);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
// Usage
$pdf = generatePdf('https://example.com');
file_put_contents('output.pdf', $pdf);
// Java (with HttpClient)
import java.net.http.*;
import java.net.URI;
public class WebPdfClient {
private static final String API_URL = "https://api.webpdf.app/v1/generate";
private final String apiKey;
public WebPdfClient(String apiKey) {
this.apiKey = apiKey;
}
public byte[] generatePdf(String url) throws Exception {
String json = String.format("{\"apiKey\":\"%s\",\"url\":\"%s\",\"format\":\"A4\"}", apiKey, url);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(API_URL))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse response = client.send(
request, HttpResponse.BodyHandlers.ofByteArray()
);
return response.body();
}
}
// C# (.NET)
using System.Net.Http;
using System.Text;
using System.Text.Json;
public class WebPdfClient
{
private readonly HttpClient _client;
private readonly string _apiKey;
private const string ApiUrl = "https://api.webpdf.app/v1/generate";
public WebPdfClient(string apiKey)
{
_client = new HttpClient();
_apiKey = apiKey;
}
public async Task<byte[]> GeneratePdfAsync(string url)
{
var payload = new {
apiKey = _apiKey,
url = url,
format = "A4"
};
var json = JsonSerializer.Serialize(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await _client.PostAsync(ApiUrl, content);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsByteArrayAsync();
}
}
# cURL con URL
curl -X POST https://api.webpdf.app/v1/generate \
-H "Content-Type: application/json" \
-d '{
"apiKey": "test-key",
"url": "https://example.com",
"format": "A4",
"landscape": false
}' \
--output document.pdf
# cURL con HTML diretto
curl -X POST https://api.webpdf.app/v1/generate \
-H "Content-Type: application/json" \
-d '{
"apiKey": "test-key",
"html": "Test
PDF generato da HTML.
",
"format": "A4"
}' \
--output document.pdf
Fehlerbehandlung
Die API gibt Standard-HTTP-Codes und einen JSON-Body mit Fehlerdetails zurück.
| Code | Bedeutung | Aktion |
|---|---|---|
| 200 | Erfolg | PDF erfolgreich generiert |
| 400 | Bad Request | Anfrageparameter prüfen |
| 401 | Nicht autorisiert | API-Key fehlt oder ungültig |
| 403 | Verboten | Unzureichendes Guthaben oder Konto gesperrt |
| 429 | Too Many Requests | Rate Limit überschritten, später erneut versuchen |
| 500 | Serverfehler | Interner Fehler, kontaktieren Sie uns bei Fortbestehen |
Rate Limits
Um die Stabilität des Dienstes zu gewährleisten, wenden wir Anfrage-Limits pro API-Key an.
Plan-Limits
- Kostenlos 60 req/min
- Startup 300 req/min
- Business 600 req/min
- Enterprise Custom
Response-Header
X-RateLimit-Limit: Anfrage-Limit pro ZeitfensterX-RateLimit-Remaining: Verbleibende AnfragenX-RateLimit-Reset: Zeitstempel für Limit-Reset
Changelog
v3.0.0 - Januar 2024
Feature Update
- Unterstützung für html-Parameter hinzugefügt
- url-Parameter wird optional
- Verbesserte Validierung
- Abwärtskompatibilität gewahrt
v1.1.0 - Juni 2023
Initialer Release
- Erster Endpunkt /v1/generate
- HTML-zu-PDF-Konvertierung mit iText 7
- Automatisches Abrufen von Web-Inhalten
- HTML-Reinigung mit Jsoup
- Unterstützung für bestehende PDFs