PdfBuilder Fluent API
PdfBuilder bietet eine Fluent-Konfigurations-API zur PDF-Erstellung. Verketten Sie Methoden, um Seitengröße, Ränder, Schriftgröße, Metadaten und mehr festzulegen, und rufen Sie anschließend eine from_*-Methode auf, um das PDF zu erzeugen.
Verfügbarkeit in den Bindings. Der fluente
PdfBuilder/WasmPdfBuilderist in Python, Rust und WASM verfügbar. Die Go- und C#-Bindings stellen die abgekürzten Einstiegspunkte (FromMarkdown,FromHtml,FromImage/Pdf.FromMarkdown,Pdf.FromHtml,Pdf.FromText) bereit, jedoch nicht die Konfigurationsschnittstelle des Builders. Für benutzerdefinierte Ränder oder Seitengrößen aus Go oder C# rufen Sie die Rust-CLI mit Flags auf oder kapseln Sie einen Rust-Helfer, der den Builder über FFI bereitstellt.
Schnellbeispiel
Python
from pdf_oxide import Pdf
# Python uses optional keyword arguments on Pdf static methods
pdf = Pdf.from_markdown(
"# Report\n\nContent here.",
title="Quarterly Report",
author="Finance Team"
)
pdf.save("report.pdf")
WASM
import { WasmPdf } from "pdf-oxide-wasm";
// JavaScript uses optional title and author parameters
const pdf = WasmPdf.fromMarkdown(
"# Report\n\nContent here.",
"Quarterly Report",
"Finance Team"
);
writeFileSync("report.pdf", pdf.toBytes());
Rust
use pdf_oxide::api::PdfBuilder;
use pdf_oxide::writer::PageSize;
let pdf = PdfBuilder::new()
.title("Quarterly Report")
.author("Finance Team")
.page_size(PageSize::A4)
.margin(54.0)
.font_size(11.0)
.line_height(1.5)
.from_markdown("# Report\n\nContent here.")?;
pdf.save("report.pdf")?;
Vollständige API-Referenz
Konstruktor
PdfBuilder::new() -> PdfBuilder
Erstellt einen neuen Builder mit der Standardkonfiguration:
| Einstellung | Standard |
|---|---|
| Seitengröße | Letter (8.5" x 11") |
| Alle Ränder | 72pt (1 Zoll) |
| Schriftgröße | 12pt |
| Zeilenhöhe | 1.5 |
Metadaten-Methoden
.title(title) – Dokumenttitel festlegen
PdfBuilder::new().title("My Document")
.author(author) – Dokumentautor festlegen
PdfBuilder::new().author("Jane Smith")
.subject(subject) – Dokumentbetreff festlegen
PdfBuilder::new().subject("Annual Performance Review")
.keywords(keywords) – Dokumentschlüsselwörter festlegen
PdfBuilder::new().keywords("report, annual, 2025")
Layout-Methoden
.page_size(size) – Seitengröße festlegen
use pdf_oxide::writer::PageSize;
PdfBuilder::new().page_size(PageSize::A4)
PageSize-Enum:
| Variante | Abmessungen |
|---|---|
PageSize::Letter |
612 x 792 pt (8.5" x 11") |
PageSize::A4 |
595 x 842 pt (210 x 297 mm) |
PageSize::Legal |
612 x 1008 pt (8.5" x 14") |
PageSize::A3 |
842 x 1190 pt (297 x 420 mm) |
PageSize::Custom(w, h) |
Benutzerdefinierte Breite x Höhe in Punkten |
.margin(margin) – Einheitliche Ränder festlegen
Legt alle vier Ränder (links, rechts, oben, unten) auf denselben Wert in Punkten fest.
PdfBuilder::new().margin(54.0) // 0.75 inch margins
.margins(left, right, top, bottom) – Einzelne Ränder festlegen
PdfBuilder::new().margins(72.0, 72.0, 54.0, 54.0)
Typografie-Methoden
.font_size(size) – Standardschriftgröße festlegen
PdfBuilder::new().font_size(11.0)
.line_height(height) – Zeilenhöhen-Multiplikator festlegen
Steuert den Abstand zwischen den Zeilen. Ein Wert von 1.5 bedeutet das 1,5-Fache der Schriftgröße.
PdfBuilder::new().line_height(1.6)
Erzeugungsmethoden
Jede Erzeugungsmethode verbraucht den Builder und gibt ein Pdf-Objekt zurück.
.from_markdown(content) – Aus Markdown erzeugen
let pdf = PdfBuilder::new()
.title("Notes")
.from_markdown("# Notes\n\n- Item one\n- Item two")?;
.from_html(content) – Aus HTML erzeugen
let pdf = PdfBuilder::new()
.title("Report")
.from_html("<h1>Report</h1><p>Summary of findings.</p>")?;
.from_text(content) – Aus reinem Text erzeugen
let pdf = PdfBuilder::new()
.font_size(10.0)
.from_text("Line 1\nLine 2\nLine 3")?;
.from_image(path) – Aus einem einzelnen Bild erzeugen
let pdf = PdfBuilder::new()
.page_size(PageSize::A4)
.from_image("photo.jpg")?;
.from_image_bytes(data) – Aus Bild-Bytes erzeugen
let data = std::fs::read("chart.png")?;
let pdf = PdfBuilder::new().from_image_bytes(&data)?;
.from_images(paths) – Aus mehreren Bildern erzeugen
let pdf = PdfBuilder::new()
.title("Photo Album")
.from_images(&["img1.jpg", "img2.jpg", "img3.jpg"])?;
.from_qrcode(data) – QR-Code-PDF erzeugen
Erfordert das Feature barcodes.
let pdf = PdfBuilder::new()
.title("QR Code")
.from_qrcode("https://example.com")?;
.from_barcode(barcode_type, data) – Barcode-PDF erzeugen
Erfordert das Feature barcodes.
use pdf_oxide::writer::barcode::BarcodeType;
let pdf = PdfBuilder::new()
.from_barcode(BarcodeType::Code128, "ABC-12345")?;
Fortgeschrittene Beispiele
Vollständige Konfigurationskette
use pdf_oxide::api::PdfBuilder;
use pdf_oxide::writer::PageSize;
let content = r#"
# Technical Specification
## Overview
This document defines the interface contract for the v2 API.
## Endpoints
- `GET /api/v2/users` - List users
- `POST /api/v2/users` - Create user
- `GET /api/v2/users/:id` - Get user by ID
## Authentication
All endpoints require a Bearer token in the Authorization header.
"#;
let pdf = PdfBuilder::new()
.title("API Specification v2")
.author("Platform Team")
.subject("REST API Technical Specification")
.keywords("api, rest, specification, v2")
.page_size(PageSize::A4)
.margins(72.0, 72.0, 54.0, 72.0)
.font_size(11.0)
.line_height(1.5)
.from_markdown(content)?;
pdf.save("api_spec.pdf")?;
Benutzerdefinierte Seitengröße
use pdf_oxide::api::PdfBuilder;
use pdf_oxide::writer::PageSize;
// Create a half-letter page (5.5" x 8.5")
let pdf = PdfBuilder::new()
.page_size(PageSize::Custom(396.0, 612.0))
.margin(36.0)
.font_size(10.0)
.from_markdown("# Pocket Guide\n\nCompact reference card.")?;
pdf.save("pocket_guide.pdf")?;
JavaScript-Entsprechung
In JavaScript/WASM akzeptieren die statischen WasmPdf-Methoden optionale title- und author-Parameter und bieten damit dieselbe Funktionalität wie die Metadaten des PdfBuilder:
import { WasmPdf } from "pdf-oxide-wasm";
const pdf = WasmPdf.fromMarkdown("# Notes\n\n- Item one\n- Item two", "Notes");
const html = WasmPdf.fromHtml("<h1>Report</h1><p>Summary.</p>", "Report", "Author");
const text = WasmPdf.fromText("Line 1\nLine 2", "Plain Text Doc");
const img = WasmPdf.fromImageBytes(imageData);
Die Konfiguration von Seitengröße, Rändern, Schriftgröße und Zeilenhöhe ist in der WASM-API nicht verfügbar — verwenden Sie die Standard-Layouteinstellungen.
Ausgabemethoden
Sobald Sie ein Pdf- / WasmPdf-Objekt haben, verwenden Sie diese Methoden zur Ausgabe:
| Methode | Sprache | Beschreibung |
|---|---|---|
.save(path) |
Python, Rust | Schreibt das PDF in eine Datei |
.to_bytes() (Python) |
Python | Liefert die rohen PDF-Bytes |
.into_bytes() (Rust) |
Rust | Verbraucht das Pdf und gibt Vec<u8> zurück |
.toBytes() (JS) |
JavaScript | Liefert das PDF als Uint8Array |
Verwandte Seiten
- Aus Markdown erstellen – Markdown zu PDF
- Aus HTML erstellen – HTML zu PDF
- Aus Bildern erstellen – Bilder zu PDF
- DocumentBuilder Low-Level-API – Programmatischer Seitenaufbau
- QR-Codes und Barcodes – Barcode-Erzeugung