Schnelltest (1 Minute)
http://{server-ip}:8080/pdfguard/api/v1/render
bereit.
curl -X POST https://sandbox.onprempdf.com/pdfguard/api/v1/render \
-H "Content-Type: application/json" \
-d '{
"template": "default",
"title": "Sandbox Test",
"subtitle": "Erster API-Aufruf",
"fields": [
{ "label": "Name", "value": "Max Mustermann" },
{ "label": "E-Mail", "value": "max@example.de" }
],
"footer": "Erstellt mit OnPremPDF"
}' --output sandbox-test.pdf
Das generierte PDF wird als Datei test.pdf gespeichert.
Hinweis: Je nach Shell oder Betriebssystem (insbesondere unter Windows)
kann mehrzeiliges JSON von curl nicht korrekt verarbeitet werden.
Falls die Anfrage mit 400 Invalid JSON fehlschlägt, verwenden Sie bitte
die unten stehende Alternative.
curl -X POST https://sandbox.onprempdf.com/pdfguard/api/v1/render -H "Content-Type: application/json" -d "{\"template\":\"default\",\"title\":\"Sandbox Test\",\"subtitle\":\"Erster API Aufruf\",\"fields\":[{\"label\":\"Name\",\"value\":\"Max Mustermann\"},{\"label\":\"Email\",\"value\":\"max@example.de\"}],\"footer\":\"Erstellt mit OnPremPDF\"}" -o sandbox-test.pdf
Die Sandbox ist oeffentlich zugaenglich und dient ausschliesslich zu Test- und Evaluierungszwecken.
API-Endpunkt
Der Endpunkt erzeugt synchron ein PDF-Dokument und liefert dieses direkt als HTTP-Antwort zurück.
POST http://{servername}:8080/pdfguard/api/v1/render
Content-Type: application/json
Request-Body (JSON) Struktur
JSON-Struktur, die im Body des
POST /api/v1/render Requests gesendet wird.
- Ein Feld = eine Zeile im PDF
- Reihenfolge bleibt erhalten
- Dynamisch erweiterbar
Hinweis:
Das fields-Array kann beliebig viele Einträge enthalten.
Jeder Eintrag wird als eigene Zeile im generierten PDF dargestellt.
{
"template": "default",
"title": "Schadenmeldung",
"subtitle": "Datum: 2026-01-10",
"fields": [
{ "label": "Schadenart", "value": "Wasserschaden" },
{ "label": "Beschreibung", "value": "Wasser tropft aus der Decke" },
{ "label": "Name", "value": "Max Mustermann" },
{ "label": "E-Mail", "value": "max@example.de" }
],
"footer": "Generiert am 2026-01-11"
}
Request-Parameter
| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
| template | string |
Zu verwendendes PDF-Template für die Generierung
Beispiel: "default", "invoice", "report"
|
default |
| title | string | Titel des PDF-Dokuments | null |
| subtitle | string | Untertitel (z. B. Datum, Aktenzeichen) | null |
| fields | array |
Liste von beliebig vielen Objekten mit label und value.
|
[] |
| footer | string | Text im unteren Bereich des Dokuments | null |
Templates
PDF-Templates definieren das visuelle Layout und die Struktur der erzeugten Dokumente. Eine Kundenumgebung kann ein oder mehrere Templates enthalten.
Das zu verwendende Template kann über das optionale Feld
template im Request-Body ausgewählt werden.
Wird kein Template angegeben, wird automatisch das
default-Template verwendet.
{
"template": "default"
}
Beispiel für ein kundenspezifisches Template
Unten sehen Sie ein Beispiel für ein kundenspezifisches Template. Benutzerdefinierte Vorlagen können komplexe Layouts enthalten, wie tabellenbasierte Dokumente, Rechnungen, Zertifikate, Berichte oder behördliche Formulare.
Code-Beispiele
http://{servername}:8080/pdfguard/api/v1/render.
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.charset.StandardCharsets;
public class Example {
public static void main(String[] args) throws Exception {
String json =
"{"
+ "\"template\":\"default\","
+ "\"title\":\"Schadenmeldung\","
+ "\"subtitle\":\"Datum: 2026-01-10\","
+ "\"fields\":["
+ " {\"label\":\"Name\",\"value\":\"Max Mustermann\"},"
+ " {\"label\":\"E-Mail\",\"value\":\"max@example.de\"},"
+ " {\"label\":\"Schadenart\",\"value\":\"Wasserschaden\"}"
+ "],"
+ "\"footer\":\"Erstellt mit OnPremPDF\""
+ "}";
URL url = new URL("https://sandbox.onprempdf.com/pdfguard/api/v1/render");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
try (OutputStream os = con.getOutputStream()) {
os.write(json.getBytes(StandardCharsets.UTF_8));
}
int status = con.getResponseCode();
System.out.println("HTTP Status: " + status);
if (status != 200) {
throw new RuntimeException("HTTP error: " + status);
}
try (InputStream is = con.getInputStream()) {
Files.copy(is, Path.of("document.pdf"), java.nio.file.StandardCopyOption.REPLACE_EXISTING);
}
System.out.println("PDF erfolgreich erzeugt.");
}
}
HTTP-Responses & Fehlermeldungen
Die API liefert standardisierte HTTP-Statuscodes zur Rueckmeldung ueber den Erfolg oder Misserfolg einer PDF-Erzeugung. Fehler werden ausschliesslich ueber HTTP-Statuscodes signalisiert.
Erfolgreiche Anfrage
200 OK
Content-Type: application/pdf
Das PDF-Dokument wird direkt im Response-Body zurueckgegeben.
Fehlermeldungen
| HTTP-Code | Bedeutung | Beschreibung |
|---|---|---|
| 400 | Bad Request | Ungueltiges oder nicht parsebares JSON oder falscher Content-Type. |
| 422 | Unprocessable Entity |
Pflichtfelder fehlen (z. B. title oder fields).
|
| 429 | Too Many Requests | Das taegliche Anfrage-Limit der Lizenz wurde erreicht. |
| 500 | Internal Server Error | Interner Fehler bei der PDF-Erzeugung. |
Jeder Request wird - sofern Audit-Logging aktiviert ist - mit Status (SUCCESS, FAILED oder REJECTED) in den Audit-Logs protokolliert.
Administrationsoberfläche Admin GUI
Die Administrationsoberfläche dient zur Überwachung des Systemstatus sowie zur Verwaltung der aktiven Lizenz. Sie wird lokal zusammen mit der PDFGuard API installiert und benötigt keine externen Dienste.
- Status und Laufzeit-Zustand des PDF-Dienstes
- Installierte Version und Betriebsmodus
- Aktiver Lizenztyp und ggf. geltende Limits
- Informationen zum lokalen REST-API-Endpunkt
Der Zugriff auf die Administrationsoberfläche ist authentifizierungspflichtig.
Der Standard-Benutzername lautet pdfguard.
Das Passwort wird während der Installation automatisch generiert und
nur einmalig im Terminal ausgegeben.
Die Administrationsoberfläche ist lokal erreichbar unter:
http://{servername}:8080/pdfguard/
Username:
pdfguard
Password: stored in
/opt/tomcat/conf/tomcat-users.xml
Berechtigungen: 600 (ausschließlich für den Benutzer tomcat lesbar; das Passwort ist zufällig generiert)
Optionale Sandbox-Vorschau
Zu Evaluierungszwecken steht eine schreibgeschützte Vorschau der Administrationsoberfläche in der Sandbox-Umgebung zur Verfügung:
Die Sandbox dient ausschließlich zur Ansicht und erlaubt keine Konfigurationsänderungen oder Lizenzaktivierungen.
Dashboard Monitoring
Das Dashboard bietet eine Echtzeit-Übersicht über die PDF-Erzeugungsaktivität auf Basis ausschliesslich lokal gespeicherter Audit-Log-Daten. Es dient der operativen Überwachung sowie der Compliance-Transparenz.
- Gesamtanzahl der PDF-Anfragen im ausgewählten Zeitraum
- Aufschlüsselung nach Request-Status (SUCCESS, REJECTED, FAILED)
- Visualisierung des täglichen Anfragevolumens
- Zeitbasierte Filterung (z. B. letzte 7 oder Datum-Wahl)
Das Dashboard ist lokal erreichbar unter:
http://{servername}:8080/pdfguard/dashboard.html
Alle Statistiken werden ausschliesslich aus lokalen Audit-CSV-Dateien berechnet. Es werden keine externen Dienste, Telemetrie oder Drittanbieter-Analysen verwendet.
Administrationsoberflaeche Audit-Logs
Die Administrationsoberflaeche stellt revisionssichere Audit-Logs zur Nachvollziehbarkeit aller PDF-Erzeugungen bereit. Sie wird lokal zusammen mit der PDFGuard API installiert.
- Zeitstempel der PDF-Erzeugung (Datum und Uhrzeit)
- Interne Request-ID (rein technisch, kein Bezug zum Dokumentinhalt)
- Renderzeit des Backend-Prozesses in Millisekunden
- IP-Adresse des aufrufenden Systems (anonymisiert / maskiert)
- Status der REST-API-Anfrage (SUCCESS, FAILED, REJECTED)
Die Audit-Logs sind erreichbar unter:
http://{servername}:8080/pdfguard/logs.html
Es werden keine PDF-Inhalte, Nutzdaten oder personenbezogenen Informationen gespeichert oder angezeigt.
Hinweis zur Audit Retention
Die Audit Retention definiert, wie lange Audit-Protokolle gespeichert werden, bevor diese automatisch geloescht werden.
- Unterstuetzt Datenschutz- und DSGVO-Anforderungen
- Vermeidet unbegrenzte Log-Speicherung
- Automatische Bereinigung aelterser Audit-Daten
Beispiel: Bei einer Retention von 30 Tagen werden ausschliesslich Audit-Protokolle der letzten 30 Tage aufbewahrt.