PDF-Lesezeichen hinzufügen und Zielseite prüfen
In einem PDF mit 32 Seiten, in dem Cover, Methods und Appendix auf die Seiten 1, 8 und 27 zeigen, landet ein Lesezeichen Results für Seite 18 an dritter Stelle. Geben Sie Seitenzahl, Lesezeichen, Titel und Zielseite ein und erhalten Sie die neue Gliederung. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Seitenanzahl
- 32
- Titel
- Results
- Seite
- 18
- Anzahl
- 4
- Eingefügter Index
- 2
Ergänzen Sie eine PDF-Gliederung um einen zuverlässigen Navigationseintrag, ohne raten zu müssen, ob dessen Ziel existiert oder an welche Stelle er gehört. Geben Sie die Seitenzahl des Dokuments, die vorhandenen Lesezeichen der obersten Ebene, einen Titel und eine ab eins gezählte Zielseite an. Die Funktion prüft das neue Ziel anhand des tatsächlichen Seitenbereichs, validiert die bestehende Gliederung und fügt das Lesezeichen nach Seiten sortiert ein. Als Ergebnis erhalten Sie eine neue strukturierte Gliederung samt Einfügeindex, die sich in einem nachfolgenden PDF-Schreibschritt serialisieren oder in einem automatisierten Dokumentenablauf prüfen lässt.
Beschreiben Sie die PDF und das neue Lesezeichen
Beginnen Sie mit der Gesamtzahl der PDF-Seiten, denn sie legt alle zulässigen Ziele fest. Übergeben Sie anschließend die vorhandene Gliederung der obersten Ebene als Liste von Datensätzen mit Titel und Seite in der Reihenfolge des Dokuments. Die Zählung beginnt bei eins: Seite 1 ist die erste sichtbare PDF-Seite und kein interner Offset von null.
Geben Sie zuletzt Titel und Zielseite des einzufügenden Lesezeichens an. Leerzeichen an den Titelrändern werden entfernt, damit versehentliche Abstände aus Formularen oder Tabellen nicht in der sichtbaren Beschriftung erscheinen. Die Funktion verarbeitet die Gliederungsdarstellung, ohne binäre PDF-Daten zu decodieren oder neu zu schreiben.
Dadurch eignet sie sich nach dem Einlesen einer Datei durch einen Parser oder bevor eine Bibliothek die aktualisierte Gliederung in die PDF schreibt. Eine leere Gliederung ist gültig. Dasselbe Anfrageformat kann somit das erste Lesezeichen anlegen oder ein umfangreiches Inhaltsverzeichnis ergänzen, ohne dass Sie einen besonderen Modus wählen müssen.
Prüfen Sie Grenzen und bewahren Sie eine klare Reihenfolge
Ein Lesezeichen ist nur sinnvoll, wenn sein Ziel existieren kann. Seite null, negative Zahlen, Brüche und Werte hinter der letzten Seite führen zu einem Fehler für ungültige Eingaben, der den zulässigen Bereich nennt. Vorhandene Lesezeichen werden nach derselben Regel geprüft, damit eine scheinbar erfolgreiche Änderung keine defekten Ziele übernimmt.
Auch ihre Titel müssen sichtbaren Text enthalten. Die übergebene Gliederung muss aufsteigend nach Zielseite sortiert sein. Eine ungeordnete Liste würde die richtige Position mehrdeutig machen und könnte die beabsichtigte Navigation unbemerkt umstellen.
Nach der Prüfung läuft der Algorithmus bis zum ersten Lesezeichen einer späteren Seite und fügt den neuen Eintrag davor ein. Verweisen mehrere Einträge bereits auf dieselbe Seite, folgt der neue Eintrag diesen und wahrt ihre relative Reihenfolge. Weder die Eingabeliste noch deren Datensätze werden verändert.
Nutzen Sie die Ausgabe in Ihrem Dokumentenablauf
Die Rückgabe ist unabhängig von einer bestimmten Bibliothek. Eine Anwendung kann jeden Titel und jede ab eins gezählte Seite auf die Zielobjekte ihres PDF-Werkzeugs abbilden. Diese Funktion verändert keine PDF-Bytes, erkennt keine Überschriften aus Seitentext, erzeugt keine verschachtelten Kinder und repariert keine ungeordnete Gliederung.
Solche Aufgaben benötigen gesonderte Analyse-, Hierarchie- oder Serialisierungsschritte. Durch die getrennte Einfügung werden Bereichsfehler erkannt, bevor ein Dokument mit unbrauchbarer Navigation entsteht. Verwenden Sie die Seitenzahl derselben PDF-Version, die später geschrieben wird.
Anwendungsfälle
Ein neues Kapitel ergänzen
Fügen Sie eine Kapitelbezeichnung an der geprüften Startseite ein, bevor die überarbeitete PDF geschrieben wird.
Berichtsnavigation automatisieren
Ergänzen Sie ein Lesezeichen für einen erzeugten Anhang oder eine Zusammenfassung und weisen Sie unmögliche Ziele zurück.
Gliederungsänderungen prüfen
Zeigen Sie Einfügeindex und aktualisierte Gliederung in einer Freigabeansicht, bevor Sie die Originaldatei ändern.
Häufige Fragen
Wird die PDF-Datei selbst verändert?
Nein. Die Funktion liefert eine aktualisierte Gliederungsdarstellung, die ein PDF-Werkzeug oder Dokumentenablauf anwenden kann.
Wo landet ein Lesezeichen, wenn dieselbe Seite schon verwendet wird?
Es wird nach allen bestehenden Lesezeichen dieser Seite eingefügt und deren Reihenfolge bleibt erhalten.
Können verschachtelte Lesezeichen hinzugefügt werden?
Nein. Diese gezielte Funktion ergänzt ein Lesezeichen der obersten Ebene in einer nach Seiten sortierten Gliederung.
Kann ich einem PDF ohne Lesezeichen das erste hinzufügen?
Ja. Eine leere Gliederung ist zulässig, daher erstellt derselbe Vorgang das erste Lesezeichen oder erweitert ein langes Inhaltsverzeichnis, ohne dass Sie einen Modus wechseln.
Was passiert, wenn die vorhandenen Lesezeichen nicht nach Seiten geordnet sind?
Sie werden abgelehnt. Vorhandene Lesezeichen müssen nach aufsteigender Seite sortiert sein; eine ungeordnete Liste machte die richtige Position mehrdeutig und könnte die vom Autor gewollte Navigation stillschweigend umstellen.
Verwandte Tools
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/bookmarks-add \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"page_count":24,"outline":[{"title":"Introduction","page":1},{"title":"Results","page":12}],"title":"Methods","page":7}'const res = await fetch("https://api.kit.forhosting.com/pdf/bookmarks-add", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"page_count": 24,
"outline": [
{
"title": "Introduction",
"page": 1
},
{
"title": "Results",
"page": 12
}
],
"title": "Methods",
"page": 7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/bookmarks-add",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"page_count": 24,
"outline": [
{
"title": "Introduction",
"page": 1
},
{
"title": "Results",
"page": 12
}
],
"title": "Methods",
"page": 7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/bookmarks-add", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"page_count":24,"outline":[{"title":"Introduction","page":1},{"title":"Results","page":12}],"title":"Methods","page":7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"page_count":24,"outline":[{"title":"Introduction","page":1},{"title":"Results","page":12}],"title":"Methods","page":7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/bookmarks-add", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"page_count": 24,
"outline": [
{
"title": "Introduction",
"page": 1
},
{
"title": "Results",
"page": 12
}
],
"title": "Methods",
"page": 7
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.bookmarks_add",
"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_mb | 25 |
max_pages | 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. |
Technische Hinweise
Prüfen Sie Grenzen und bewahren Sie eine klare Reihenfolge
Die angeforderte Seite muss deshalb eine ganze Zahl zwischen 1 und page_count einschließlich sein. Ohne Netzwerk, Zeitstempel, Zufallskennungen oder gebietsspezifische Vergleiche erzeugt dieselbe JSON-Eingabe stets dieselbe Ausgabe.
Nutzen Sie die Ausgabe in Ihrem Dokumentenablauf
Die Antwort enthält page_count, die neue Anzahl der Lesezeichen, einen bei null beginnenden inserted_index und die vollständige aktualisierte Gliederung. Verwenden Sie inserted_index, wenn eine Prüfansicht die neu erstellte Zeile hervorheben soll, oder reichen Sie nur die Gliederung an den nächsten Schritt weiter. Im Browser kann eine Redaktion ein Ziel vor der Veröffentlichung schnell kontrollieren; ein API-Aufruf für $0.002 eignet sich für wiederkehrende Abläufe wie Rechtshinweise, Anhänge, Versionshinweise oder automatisch erzeugte Kapitel.
Technische Fragen
Wie werden die Seiten gezählt?
Die Zählung beginnt bei eins: 1 ist die erste Seite und page_count das letzte gültige Ziel.
Was geschieht bei einer Zielseite außerhalb des Bereichs?
Die Anfrage schlägt mit invalid_input und einer Meldung zum gültigen Seitenbereich fehl.
Was kostet eine API-Anfrage?
Eine erfolgreiche API-Anfrage kostet $0.002; dieselbe deterministische Funktion ist im Browser kostenlos.