Ebooks zu PDF API - Professionelle Buch-PDF-Generierung

Verwandeln Sie Buchinhalte in professionell formatierte PDFs mit eleganter Typografie, automatischer Seitennummerierung, Inhaltsverzeichnis und uber 150 Anpassungsoptionen. Perfekt fur Self-Publishing und Manuskripterstellung.

Was können Sie tun?
Professionelle Buch-PDFs

Konvertieren Sie Romane, Manuskripte und mehrkkapitelige Inhalte in druckfertige PDFs mit eleganter Typografie und automatischer Seitennummerierung.

Produktionsqualitat

Hochwertige A4/A5/Letter-Ausgabe mit Titelseite, Anmerkungsseite, Inhaltsverzeichnis und Impressumseite. Bis zu 500 Seiten unterstutzt.

Uber 150 Anpassungsoptionen

Steuern Sie Schriftarten, Abstande, Rander, Farben und Layout. Rander passen sich automatisch an die Schriftgrosse an.

99.9 % Verfügbarkeit
4585.9ms Antwort
5 req/s
2 Credits / Anfrage

Convert to PDF

POST https://api.yeb.to/v1/ebooks/pdf/convert-from-file
Parameter Typ Erf. Beschreibung
api_key string Yes Your API authentication key (send in Authorization header or as parameter)
file_url string Yes Public URL to JSON file containing book data (metadata, chapters, options)
Why file URL? POST request size limits can truncate large book content. This endpoint accepts a URL to a JSON file hosted on your server, avoiding size restrictions.

JSON File Structure

Your JSON file at file_url should contain:

Parameter Typ Erf. Beschreibung
template string Yes Template name: elegant-novel
metadata object Yes Book metadata (title, author, etc.)
metadata.title string Yes Book title
metadata.author string Yes Author name
metadata.description string Optional Book description/blurb (supports multiple paragraphs with \n\n)
metadata.year integer Optional Publication year (default: current year)
metadata.publisher string Optional Publisher name
metadata.isbn string Optional ISBN number
metadata.series string Optional Book series name (shown on cover)
metadata.subtitle string Optional Book subtitle (shown on cover)
metadata.cover_image string Optional Cover image URL
chapters array Yes Array of chapter objects (min: 1)
chapters[].title string Yes Chapter title
chapters[].content string Yes Chapter content (supports multiple paragraphs with \n\n)
options object Optional Customization options (150+ available)
options.format string Optional A4 | A5 | Letter (default: A4)
options.chapter_content_font_size string Optional Font size (e.g., "12pt", "16pt") - margins auto-adjust (default: 12pt)
options.chapter_content_line_height string Optional Line height (e.g., "1.6", "1.8") (default: 1.6)
options.meta_fields array Optional Custom metadata fields: [{"key":"genre","label":"Genre"}]
texts object Optional Text customizations (e.g., copyright_text, publisher_text)

JSON File Example

1. Create book.json file on your server:
{
  "template": "elegant-novel",
  "metadata": {
    "title": "The Great Gatsby",
    "author": "F. Scott Fitzgerald",
    "subtitle": "A Novel of the Jazz Age",
    "series": "American Classics",
    "description": "A story of decadence and excess...\n\nSet in the summer of 1922...",
    "year": 1925,
    "publisher": "Charles Scribner's Sons",
    "genre": "Literary Fiction",
    "themes": "American Dream, wealth, love, betrayal",
    "language_name": "English",
    "edition": "First Edition"
  },
  "chapters": [
    {
      "title": "Chapter I",
      "content": "In my younger and more vulnerable years...\n\nAnd, after boasting this way..."
    },
    {
      "title": "Chapter II",
      "content": "About half way between West Egg and New York..."
    }
  ],
  "options": {
    "format": "A4",
    "chapter_content_font_size": "14pt",
    "chapter_content_line_height": "1.7",
    "chapter_title_font_size": "28pt",
    "meta_fields": [
      {"key": "genre", "label": "Genre"},
      {"key": "themes", "label": "Themes"},
      {"key": "language_name", "label": "Language"},
      {"key": "edition", "label": "Edition"}
    ]
  },
  "texts": {
    "annotation_heading_text": "About this book",
    "copyright_text": "Copyright © {year} {author}. All rights reserved.",
    "publisher_text": "Published by {publisher}"
  }
}
2. Upload to your server (e.g., https://yourdomain.com/books/book.json)
3. Call API with file_url:

Integration Examples

curl -X POST https://api.yeb.to/v1/ebooks/pdf/convert-from-file \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_url": "https://yourdomain.com/books/book.json"}'
const response = await fetch('https://api.yeb.to/v1/ebooks/pdf/convert-from-file', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    file_url: 'https://yourdomain.com/books/book.json'
  })
});
const result = await response.json();
console.log(result.pdf_url);
$response = Http::withHeaders([
    'Authorization' => 'Bearer YOUR_API_KEY'
])->post('https://api.yeb.to/v1/ebooks/pdf/convert-from-file', [
    'file_url' => 'https://yourdomain.com/books/book.json'
]);
$pdf_url = $response->json()['pdf_url'];
import requests

headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
payload = {
    "file_url": "https://yourdomain.com/books/book.json"
}
r = requests.post('https://api.yeb.to/v1/ebooks/pdf/convert-from-file', json=payload, headers=headers)
print(r.json()['pdf_url'])

Response Examples

{
  "success": true,
  "pdf_url": "https://yeb.to/storage/ebooks/ebook_abc123.pdf",
  "pdf_size": 860031,
  "template": "elegant-novel",
  "generated_at": "2026-01-07T14:30:00+02:00",
  "response_code": 200,
  "response_time_ms": 4773
}
{
  "error": "Metadata field 'title' is required",
  "response_code": 400,
  "response_time_ms": 45
}

Antwortcodes

CodeBeschreibung
200 SuccessAnfrage erfolgreich verarbeitet.
400 Bad RequestEingabevalidierung fehlgeschlagen.
401 UnauthorizedFehlender / falscher API-Schlüssel.
403 ForbiddenSchlüssel inaktiv oder nicht erlaubt.
429 Rate LimitZu viele Anfragen.
500 Server ErrorUnerwarteter Fehler.
Customization

The elegant-novel template supports 150+ customization options including:

  • Font sizes, families, and weights
  • Line heights and spacing
  • Colors and opacity
  • Margins and padding
  • Custom Google Fonts
  • Meta fields for annotation page
  • Auto-adjusting page margins
Full Customization Guide

ebooks/pdf/convert-from-file

ebooks/pdf/convert-from-file 2.0000 credits

Parameters

API Key
header · string · required
File URL
body · string · required

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Ebooks zu PDF API - Professionelle Buch-PDF-Generierung — Practical Guide

A hands-on guide to Ebooks zu PDF API - Professionelle Buch-PDF-Generierung: converting book content into professional PDFs with customizable typography, automatic page numbering, table of contents, and elegant formatting. Perfect for ebook publishing, document generation, and print-ready manuscripts.

#What Ebooks to PDF solves

Send structured book content (metadata, chapters) and receive a professionally formatted PDF with automatic page numbering, table of contents, cover page, and annotation page. Ideal for self-publishing, manuscript generation, print-on-demand, and document archival. Supports 150+ customization options including fonts, spacing, margins that auto-adjust based on font size.

#Endpoint & when to use it

#POST https://api.yeb.to/v1/ebooks/pdf/convert-from-file

  • Best for: Converting novels, short stories, manuals, reports, or any multi-chapter content into print-ready PDFs.
  • How it works: We render your content using the elegant-novel template with Blade + Puppeteer/Chromium for pixel-perfect output.
  • Output format: High-quality A4/A5/Letter PDFs with professional typography and automatic layout.
  • Processing time: ~2-5 seconds depending on content length and customization complexity.

#Quick start

Step 1: Create a JSON file with your book data and upload it to a public URL

# book.json (minimal example)
{
  "template": "elegant-novel",
  "metadata": {
    "title": "The Great Gatsby",
    "author": "F. Scott Fitzgerald"
  },
  "chapters": [
    {
      "title": "Chapter I",
      "content": "In my younger and more vulnerable years..."
    }
  ]
}

Step 2: Call the API with the file URL

curl -X POST "https://api.yeb.to/v1/ebooks/pdf/convert-from-file" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_url": "https://yourdomain.com/books/book.json"}'
Why file_url? Large books can exceed POST size limits. By hosting your JSON file and sending only the URL, you avoid size restrictions and can generate books up to 500 pages.

#Parameters that actually matter

ParamRequiredWhat to pass in practiceWhy it matters
api_key Yes Send in Authorization header: Bearer YOUR_KEY. Never expose in frontend code. Auth & credit tracking.
file_url Yes Public URL to your JSON file containing book data (template, metadata, chapters, options). Avoids POST size limits for large books.

#JSON file structure

Your JSON file at file_url must contain:

FieldRequiredWhat to passWhy it matters
template Yes Currently only elegant-novel is supported. Determines the PDF layout style.
metadata Yes Object with title and author at minimum. Can include description, year, publisher, etc. Populates cover page and document properties.
chapters Yes Array of objects, each with title and content. Minimum 1 chapter required. The actual book content to render.
options No 150+ customization options for fonts, spacing, colors, margins, etc. Fine-tune typography and layout.
texts No Override default text labels (e.g., copyright notice, publisher text). Localization and branding.

#Key metadata fields

FieldUse it forNotes
titleBook title (required)Shown on cover and headers.
authorAuthor name (required)Shown on cover and headers.
descriptionBook blurb/synopsisAppears on annotation page. Use \n\n for multiple paragraphs.
subtitleBook subtitleOptional subtitle on cover page.
seriesSeries nameShown on cover above title.
yearPublication yearDefaults to current year if omitted.
publisherPublisher nameShown on cover footer and copyright page.
isbnISBN numberOptional, shown on copyright page.
cover_imageCover illustration URLImage displayed on cover page.
Custom fieldsGenre, themes, etc.Add any custom fields; use options.meta_fields to display them.

#Chapter formatting

Each chapter object requires:

  • title — The chapter heading (e.g., "Chapter I", "Prologue").
  • content — The chapter text. Use \n\n to separate paragraphs.

Optional chapter fields:

  • subtitle — Chapter subtitle (shown below chapter title).
  • number — Chapter number (for display if using chapter_number_format).

#Customization options that matter

#Typography & spacing

OptionDefaultUse case
chapter_content_font_size12ptMain text size. Margins auto-adjust when changed (14pt, 16pt, etc.).
chapter_content_line_height1.6Line spacing. Higher values (1.8, 2.0) improve readability.
chapter_title_font_size28ptChapter heading size.
chapter_content_text_indent15ptFirst line indent for paragraphs.
chapter_content_paragraph_spacingAutoSpace between paragraphs (auto-calculated based on font size).

#Page format & orientation

OptionValuesUse case
formatA4, A5, LetterPage size. A4 is default (210×297mm).
orientationportrait, landscapePage orientation. Portrait is default.

#Custom metadata fields

Display additional information on the annotation page:

"metadata": {
  "title": "My Book",
  "author": "Jane Doe",
  "genre": "Science Fiction",
  "themes": "AI, humanity, future",
  "language_name": "English"
},
"options": {
  "meta_fields": [
    {"key": "genre", "label": "Genre"},
    {"key": "themes", "label": "Themes"},
    {"key": "language_name", "label": "Language"}
  ]
}

Any field in metadata can be displayed by adding it to meta_fields.

#Toggle sections on/off

OptionDefaultDescription
include_covertrueShow cover page with title, author, publisher.
include_annotationtrueShow annotation page with description and metadata.
include_copyrighttrueShow copyright page at the end.
chapter_show_titletrueShow chapter titles.
chapter_show_headertrueShow running headers on chapter pages.

#Reading & acting on responses

{
  "success": true,
  "pdf_url": "https://yeb.to/storage/ebooks/ebook_abc123.pdf",
  "pdf_size": 860031,
  "template": "elegant-novel",
  "generated_at": "2026-01-07T14:30:00+02:00",
  "response_code": 200,
  "response_time_ms": 4773
}
  • pdf_url — Direct download URL. Files are kept for 24 hours, then auto-deleted.
  • pdf_size — File size in bytes. Useful for bandwidth estimation.
  • template — Template used for generation (currently only elegant-novel).
  • generated_at — ISO 8601 timestamp. Use for cache invalidation or logging.
  • response_time_ms — Processing time. Typically 2-5 seconds for standard books.

#Typical errors & how to fix

{ "error": "Metadata field 'title' is required", "response_code": 400 }
{ "error": "At least one chapter is required", "response_code": 400 }
{ "error": "Template 'unknown' not found", "response_code": 404 }
  • 400 validation error: Check that metadata.title, metadata.author, and at least one chapter are provided.
  • 401 invalid key: Verify your API key is correct and has sufficient credits.
  • 404 template not found: Use elegant-novel as the template name.
  • 500 generation failed: Check for malformed JSON or extremely large content. Contact support if persists.

#Troubleshooting & field notes

  1. File URL not accessible: Ensure your JSON file is publicly accessible (no auth required). Test by opening the URL in a browser - it should download/display the JSON. Check CORS headers if serving from a different domain.
  2. Invalid JSON format: Validate your JSON file before uploading. Use a JSON validator or jq to check syntax. Common errors: trailing commas, unquoted keys, smart quotes instead of straight quotes.
  3. Text overlaps page numbers: The API auto-adjusts margins based on chapter_content_font_size. If using very large fonts (>20pt), verify the output. Margins scale automatically: 12pt = 22mm bottom, 16pt = 27mm bottom, 20pt = 32mm bottom.
  4. Fonts not loading: Ensure options.include_fonts is true (default). For custom fonts, use options.custom_fonts with Google Fonts URLs.
  5. Paragraphs not separating: Use \n\n (double newline) in chapter content to separate paragraphs, not single \n.
  6. Custom metadata not showing: Add the field to both metadata object AND options.meta_fields array with matching key.
  7. Processing timeout: Very long books (>500 pages) may timeout. Processing time: 10-50 pages = 5-15s, 50-200 pages = 30-60s, 200-500 pages = 2-3 minutes. Consider splitting into volumes if needed.
  8. PDF file expires: PDFs are auto-deleted after 24 hours. Download immediately after generation or store on your own CDN.
  9. Inconsistent spacing: Use the same chapter_content_line_height value for all requests to maintain consistency across documents.

#Best practices

  • Host JSON files reliably: Use a CDN or reliable hosting for your JSON files. Ensure files remain accessible for the duration of the API call (2-3 minutes for large books).
  • Validate JSON before upload: Use a JSON validator to catch syntax errors. Invalid JSON will fail immediately with a 400 error.
  • Use descriptive filenames: Name files clearly (e.g., book-{id}-{timestamp}.json) for easier debugging and tracking.
  • Cache responses: Same file_url = same output. Cache PDF URLs for 24h to avoid regenerating identical documents.
  • Pre-validate content: Check for required fields (title, author, chapters) before creating JSON files.
  • Use consistent font sizes: Pick one base font size (12pt, 14pt, or 16pt) for your brand and stick with it across all books.
  • Store original JSON: Keep the JSON file for regeneration if needed. PDFs expire after 24h but JSON can be reused indefinitely.
  • Test with real content: Short test chapters may not reveal pagination issues. Use realistic chapter lengths (2000+ words).
  • Monitor response times: Small books: 5-15s, Medium: 30-60s, Large: 2-3 minutes. If consistently slower, check file_url accessibility.
  • Handle 5xx errors gracefully: Implement retry logic with exponential backoff (wait 5s, then 10s, then 20s) for server errors.

#Real-world examples

Example 1: Self-publishing platform

Create mystery-novel.json:

{
  "template": "elegant-novel",
  "metadata": {
    "title": "Murder on the Orient Express",
    "author": "Agatha Christie",
    "series": "Hercule Poirot Mysteries",
    "description": "A luxurious train journey turns deadly...",
    "year": 1934,
    "publisher": "Collins Crime Club",
    "genre": "Mystery",
    "themes": "Murder, investigation, justice"
  },
  "chapters": [
    {"title": "Part I: The Facts", "content": "It was five o'clock on a winter's morning..."},
    {"title": "Part II: The Evidence", "content": "In a small room..."}
  ],
  "options": {
    "format": "A5",
    "chapter_content_font_size": "11pt",
    "meta_fields": [
      {"key": "genre", "label": "Genre"},
      {"key": "themes", "label": "Themes"}
    ]
  }
}

Call API:

curl -X POST "https://api.yeb.to/v1/ebooks/pdf/convert-from-file" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_url": "https://yourdomain.com/books/mystery-novel.json"}'

Example 2: Technical manual with custom branding

Create tech-manual.json:

{
  "template": "elegant-novel",
  "metadata": {
    "title": "Product Installation Guide",
    "author": "TechCorp Engineering",
    "publisher": "TechCorp Inc.",
    "year": 2026
  },
  "chapters": [
    {"title": "1. System Requirements", "content": "Before installation..."},
    {"title": "2. Installation Steps", "content": "Follow these steps..."},
    {"title": "3. Troubleshooting", "content": "If you encounter issues..."}
  ],
  "options": {
    "chapter_content_font_size": "12pt",
    "include_annotation": false,
    "chapter_show_number": true
  },
  "texts": {
    "copyright_text": "© {year} TechCorp Inc. All rights reserved.",
    "chapter_number_format": "Section {n}"
  }
}

Call API:

curl -X POST "https://api.yeb.to/v1/ebooks/pdf/convert-from-file" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_url": "https://yourdomain.com/manuals/tech-manual.json"}'

#API Changelog

2026-01-07
Auto-adjusting margins: Page margins now automatically scale based on chapter_content_font_size. Larger fonts get more top/bottom spacing to prevent overlap with headers and page numbers. Fixed: Text no longer overlaps page numbers on multi-page chapters.
2026-01-06
Custom metadata fields: Added options.meta_fields to display custom metadata on annotation page. Fixed: Custom metadata fields (genre, themes, etc.) now properly render when specified.
2026-01-05
Cleanup command: Added automatic cleanup of PDFs older than 24 hours. Files are now auto-deleted to save storage. Performance: Improved Puppeteer rendering speed by 30% for documents >50 pages.
2025-12-20
Typography improvements: Added 150+ customization options for fonts, spacing, colors, and margins. Google Fonts support with PT Serif, Bad Script, and Marck Script as defaults.
2025-12-01
Public v1 release with elegant-novel template. Support for cover page, annotation page, automatic page numbering, and copyright page.

Häufig gestellte Fragen

Derzeit bieten wir die Elegant Novel-Vorlage - ein professionelles Buchlayout mit Titelseite, Anmerkungsseite, automatischer Seitennummerierung und laufenden Kopfzeilen. Perfekt fur Romane, Kurzgeschichten und narrative Inhalte.

Wir unterstutzen A4 (210x297mm), A5 (148x210mm) und Letter (215,9x279,4mm) Formate, alle im Hochformat.

Ja! Sie haben uber 150 Anpassungsoptionen einschliesslich Schriftgrossen, Zeilenhohen, Farben, Randern und mehr. Rander passen sich automatisch an die Schriftgrosse an.

Sie konnen Bucher mit bis zu etwa 500 Seiten generieren. Die Verarbeitungszeit variiert: kurze Bucher (10-50 Seiten) dauern 5-15 Sekunden, mittlere Bucher (50-200 Seiten) 30-60 Sekunden und grosse Bucher (200-500 Seiten) 2-3 Minuten.

Jede PDF-Generierung kostet 2 Credits, unabhangig von der Seitenzahl. Credits konnen in Paketen ab 10$ erworben werden.

Die API ist auf 5 Anfragen pro Sekunde pro API-Key begrenzt, um optimale Leistung fur alle Benutzer sicherzustellen.

Generierte PDFs werden nach 24 Stunden automatisch geloscht. Laden Sie Ihr PDF sofort nach der Generierung herunter oder speichern Sie es auf Ihrem eigenen CDN.

Erforderlich: Titel und Autor. Optional: Beschreibung, Untertitel, Serienname, Jahr, Verlag, ISBN, Titelbild und beliebige benutzerdefinierte Felder (Genre, Themen, Sprache, Ausgabe usw.) uber die meta_fields-Option.

Ja. Jede Anfrage, auch solche mit Fehlern, verbraucht Credits. Ihre Credits sind an die Anzahl der Anfragen gebunden, unabhängig von Erfolg oder Misserfolg. Wenn der Fehler eindeutig auf ein Plattformproblem unsererseits zurückzuführen ist, stellen wir die betroffenen Credits wieder her (keine Barerstattung).

Kontaktieren Sie uns unter [email protected]. Wir nehmen Feedback ernst—wenn Ihr Fehlerbericht oder Ihre Funktionsanfrage sinnvoll ist, können wir die API schnell korrigieren oder verbessern und Ihnen 50 kostenlose Credits als Dankeschön gewähren.

Es hängt von der API und manchmal sogar vom Endpoint ab. Einige Endpoints nutzen Daten aus externen Quellen, die strengere Limits haben können. Wir setzen auch Limits durch, um Missbrauch zu verhindern und unsere Plattform stabil zu halten. Prüfen Sie die Dokumentation für das spezifische Limit jedes Endpoints.

Wir arbeiten mit einem Creditsystem. Credits sind vorausbezahlte, nicht erstattungsfähige Einheiten, die Sie für API-Aufrufe und Tools ausgeben. Credits werden nach dem FIFO-Prinzip (älteste zuerst) verbraucht und sind 12 Monate ab Kaufdatum gültig. Das Dashboard zeigt jedes Kaufdatum und dessen Ablauf an.

Ja. Alle gekauften Credits (einschließlich Teilguthaben) sind 12 Monate ab Kauf gültig. Ungenutzte Credits verfallen automatisch und werden am Ende der Gültigkeitsdauer dauerhaft gelöscht. Verfallene Credits können nicht wiederhergestellt oder in Bargeld oder anderen Wert umgewandelt werden. Übergangsregel: Vor dem 22. Sep. 2025 gekaufte Credits gelten als am 22. Sep. 2025 gekauft und verfallen am 22. Sep. 2026 (sofern beim Kauf kein früherer Ablauf angegeben wurde).

Ja—innerhalb ihrer Gültigkeitsdauer. Ungenutzte Credits bleiben verfügbar und werden von Monat zu Monat übertragen, bis sie 12 Monate nach dem Kauf verfallen.

Credits sind nicht erstattungsfähig. Kaufen Sie nur, was Sie brauchen—Sie können jederzeit nachladen. Wenn ein plattformseitiger Fehler eine fehlgeschlagene Abbuchung verursacht, können wir die betroffenen Credits nach Prüfung wiederherstellen. Keine Barerstattung.

Preise werden in Credits angegeben, nicht in Dollar. Jeder Endpoint hat seine eigenen Kosten—siehe das Abzeichen „Credits / Anfrage" oben. Sie wissen immer genau, was Sie ausgeben.
← Zurück zu den APIs