PDF-Reparaturdiagnose und Wiederherstellungsplan
Eine beschädigte PDF-Datei erzeugt oft eine verwirrende Liste von Parsermeldungen, ohne zu erklären, was sich tatsächlich reparieren lässt.
Im Browser ausführen – kostenlos
Diese Diagnose macht aus den strukturellen Befunden einen praktisch nutzbaren Bericht. Geben Sie Probleme wie eine fehlende Querverweistabelle, einen nicht abgeschlossenen Stream, einen falschen Längenwert oder eine abgeschnittene Datei an. Jeder Eintrag erhält eine einheitliche Klassifizierung, eine Risikostufe, eine Empfehlung und einen Platz im geordneten Plan. So können Sie vor einer Änderung der Originaldatei entscheiden, ob ein automatischer Reparaturversuch sinnvoll ist.
Machen Sie aus Prüfermeldungen eine Reparaturentscheidung
PDF-Prüfprogramme benennen beschädigte Strukturen zuverlässig, doch ihre Ausgabe reicht selten für eine vollständige Entscheidung. Eine fehlende Querverweistabelle beschreibt ein Navigationsproblem, während ein unerwartetes Dateiende bedeuten kann, dass Bytes unwiederbringlich fehlen. Eine Gleichbehandlung dieser Befunde kann Zeit verschwenden oder Spuren zerstören, die Fachleute noch hätten retten können. Diese Diagnose normalisiert jede eingegebene Beschreibung und vergleicht sie mit ausdrücklich definierten Familien struktureller Fehler. Ein erkanntes Problem wird nur dann als reparierbar markiert, wenn eine begrenzte Rekonstruktionsmethode verfügbar ist. Zusätzlich weist der Bericht eine Risikostufe zu und erläutert die empfohlene Maßnahme. Unbekannte Beschreibungen gelten bewusst als nicht automatisch reparierbar, weil Vermutungen gefährlich sind, sobald Objektgrenzen und Verweise unzuverlässig sein können. Ergänzen Sie Objektnummer, Byteposition, Seite oder Trailer-Position, sofern Ihr Prüfprogramm diese angibt. Der Bericht übernimmt diesen Kontext, damit jede Empfehlung ohne Suche in einem getrennten Protokoll dem ursprünglichen Befund zugeordnet werden kann.
Verstehen Sie die Bedeutung von reparierbar
Die Einstufung als reparierbar bedeutet, dass sich der beschädigte Struktureintrag normalerweise aus Informationen rekonstruieren lässt, die an anderer Stelle in der Datei erhalten sind. Beispielsweise können Markierungen indirekter Objekte durchsucht werden, um einen fehlenden Querverweisindex neu aufzubauen; die codierten Bytes eines Streams lassen sich messen, um einen fehlerhaften Length-Wert zu korrigieren. Das bedeutet nicht, dass jede Seite, Schriftart, Grafik, Anmerkung oder jedes Formularfeld intakt ist. Ein nicht abgeschlossener Stream gilt bei hohem Risiko als reparierbar, weil eine zuverlässige Grenze des nächsten Objekts sein Ende erkennen lassen kann; mehrdeutige Binärdaten können eine sichere Reparatur dennoch verhindern. Eine abgeschnittene Datei ist dagegen nicht reparierbar, wenn die fehlenden Bytes einmalige Inhalte enthielten. Auch ein fehlender Katalog lässt sich nicht automatisch ergänzen, da die Wahl des Dokumentstamms die beabsichtigten Beziehungen voraussetzt. Verschlüsselungsfehler bleiben gesperrt, bis berechtigte Zugangsdaten vorliegen. Bewahren Sie das Original unverändert auf, arbeiten Sie mit einer Kopie und betrachten Sie Empfehlung und Risiko gemeinsam. Gleiche Beschreibungen liefern stets dasselbe Ergebnis, ganz ohne Netzwerk, Zufall oder Sprachmodellinterpretation.
Wenden Sie den geordneten Plan an und prüfen Sie ihn
Der erzeugte Plan enthält nur als reparierbar eingestufte Einträge und behält ihre Fundreihenfolge bei. Dadurch lässt er sich leicht mit dem Prüfprotokoll vergleichen, auch wenn ein Reparaturwerkzeug zusammengehörige Änderungen in einem Schreibvorgang bündeln muss. Erhalten Sie Objektgenerationen nach Möglichkeit, verwenden Sie keine bereits belegten Kennungen und aktualisieren Sie indirekte Verweise, sobald ein Objekt neu nummeriert wird. Ändern sich Streamgrenzen oder Objektpositionen, bauen Sie die Querverweise erst nach diesen Bearbeitungen neu auf. Jeder Schritt enthält eine Prüfanweisung: Analysieren Sie die Ausgabe erneut und bestätigen Sie, dass der betreffende Befund verschwunden ist, ohne neue Strukturfehler zu verursachen. Für die Abschlussprüfung sollte ein unabhängiger Parser dienen, denn alleinige Tests mit der schreibenden Bibliothek können gemeinsame Annahmen verbergen. Vergleichen Sie Seitenzahl und erreichbaren Objektgraphen mit der Quelle, öffnen Sie repräsentative Seiten visuell und prüfen Sie wichtige interaktive Funktionen. Eine fehlerfreie Strukturanalyse ist notwendig, beweist aber nicht die Wiederherstellung verlorener Inhalte. Bewahren Sie nicht reparierbare Einträge in der Falldokumentation auf und eskalieren Sie diese, statt sie stillschweigend wegzulassen.
Anwendungsfälle
Einen Prüfbericht vorsortieren
Überführen Sie rohe Strukturbefunde in eine einheitliche Liste reparierbarer und blockierter Probleme, bevor Sie technische Arbeiten vergeben.
Einen Wiederherstellungsablauf planen
Nutzen Sie geordnete Empfehlungen zur Auswahl der Rekonstruktionsphasen und der Prüfungen nach jeder Änderung.
Eine Reparaturentscheidung dokumentieren
Fügen Sie Klassifizierungen, Fundstellen, Risiken und Empfehlungen einem Vorfall- oder Archivierungsbericht hinzu.
Häufige Fragen
Repariert diese Funktion die PDF-Datei selbst?
Nein. Sie klassifiziert eine übergebene Liste struktureller Befunde und erstellt einen Plan; PDF-Bytes werden weder empfangen noch verändert.
Was bedeutet reparierbar im Bericht?
Eine bekannte Strukturkorrektur lässt sich häufig aus erhaltenen Informationen ableiten. Eine vollständige Wiederherstellung aller Inhalte wird nicht garantiert.
Was geschieht mit einer unbekannten Prüfmeldung?
Sie wird als unbekanntes, nicht automatisch reparierbares Strukturproblem eingestuft und zur manuellen Untersuchung empfohlen.
Warum wird eine leere Problemliste abgelehnt?
Ohne Befunde kann die Diagnose nichts klassifizieren und keinen sinnvollen Plan erstellen; die Anfrage liefert daher einen Eingabefehler.
Wie viel kostet ein Bericht?
Jede API-Anfrage kostet $0.002. Die Funktion arbeitet lokal und deterministisch, ohne externes Modell oder Netzwerkdienst.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/pdf/repair-report \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"issues":[{"description":"Missing cross-reference table","location":"file trailer"},{"description":"Unterminated stream","location":"object 18"}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/repair-report", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"issues": [
{
"description": "Missing cross-reference table",
"location": "file trailer"
},
{
"description": "Unterminated stream",
"location": "object 18"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/repair-report",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"issues": [
{
"description": "Missing cross-reference table",
"location": "file trailer"
},
{
"description": "Unterminated stream",
"location": "object 18"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/repair-report", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"issues":[{"description":"Missing cross-reference table","location":"file trailer"},{"description":"Unterminated stream","location":"object 18"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"issues":[{"description":"Missing cross-reference table","location":"file trailer"},{"description":"Unterminated stream","location":"object 18"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/repair-report", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"issues": [
{
"description": "Missing cross-reference table",
"location": "file trailer"
},
{
"description": "Unterminated stream",
"location": "object 18"
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.repair_report",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_items | 200 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |