Skip to content

Плинний API PdfBuilder

PdfBuilder надає плинний (fluent) API для налаштування створення PDF. Об’єднуйте методи в ланцюжок, щоб задати розмір сторінки, поля, розмір шрифту, метадані тощо, а потім викличте метод from_* для генерації PDF.

Підтримка в привʼязках. Плинний PdfBuilder / WasmPdfBuilder доступний у Python, Rust та WASM. Привʼязки Go і C# надають спрощені точки входу (FromMarkdown, FromHtml, FromImage / Pdf.FromMarkdown, Pdf.FromHtml, Pdf.FromText), але не надають інтерфейс налаштування білдера. Щоб задати власні поля або розміри сторінки з Go чи C#, викличте Rust CLI з відповідними прапорцями або оберніть допоміжну функцію Rust, яка надає білдер через FFI.

Швидкий приклад

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")?;

Повний довідник API

Конструктор

PdfBuilder::new() -> PdfBuilder

Створює новий білдер із конфігурацією за замовчуванням:

Налаштування За замовчуванням
Розмір сторінки Letter (8.5" x 11")
Усі поля 72pt (1 дюйм)
Розмір шрифту 12pt
Висота рядка 1.5

Методи метаданих

.title(title) – задати заголовок документа

PdfBuilder::new().title("My Document")

.author(author) – задати автора документа

PdfBuilder::new().author("Jane Smith")

.subject(subject) – задати тему документа

PdfBuilder::new().subject("Annual Performance Review")

.keywords(keywords) – задати ключові слова документа

PdfBuilder::new().keywords("report, annual, 2025")

Методи компонування

.page_size(size) – задати розмір сторінки

use pdf_oxide::writer::PageSize;

PdfBuilder::new().page_size(PageSize::A4)

Перелік PageSize:

Варіант Розміри
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) Власні ширина x висота у пунктах

.margin(margin) – задати однакові поля

Встановлює всі чотири поля (ліве, праве, верхнє, нижнє) однаковим значенням у пунктах.

PdfBuilder::new().margin(54.0)  // 0.75 inch margins

.margins(left, right, top, bottom) – задати поля окремо

PdfBuilder::new().margins(72.0, 72.0, 54.0, 54.0)

Методи типографіки

.font_size(size) – задати розмір шрифту за замовчуванням

PdfBuilder::new().font_size(11.0)

.line_height(height) – задати множник висоти рядка

Керує відстанню між рядками. Значення 1.5 означає 1,5-кратний розмір шрифту.

PdfBuilder::new().line_height(1.6)

Методи генерації

Кожен метод генерації споживає білдер і повертає обʼєкт Pdf.

.from_markdown(content) – згенерувати з Markdown

let pdf = PdfBuilder::new()
    .title("Notes")
    .from_markdown("# Notes\n\n- Item one\n- Item two")?;

.from_html(content) – згенерувати з HTML

let pdf = PdfBuilder::new()
    .title("Report")
    .from_html("<h1>Report</h1><p>Summary of findings.</p>")?;

.from_text(content) – згенерувати зі звичайного тексту

let pdf = PdfBuilder::new()
    .font_size(10.0)
    .from_text("Line 1\nLine 2\nLine 3")?;

.from_image(path) – згенерувати з одного зображення

let pdf = PdfBuilder::new()
    .page_size(PageSize::A4)
    .from_image("photo.jpg")?;

.from_image_bytes(data) – згенерувати з байтів зображення

let data = std::fs::read("chart.png")?;
let pdf = PdfBuilder::new().from_image_bytes(&data)?;

.from_images(paths) – згенерувати з кількох зображень

let pdf = PdfBuilder::new()
    .title("Photo Album")
    .from_images(&["img1.jpg", "img2.jpg", "img3.jpg"])?;

.from_qrcode(data) – згенерувати PDF з QR-кодом

Потребує функції barcodes.

let pdf = PdfBuilder::new()
    .title("QR Code")
    .from_qrcode("https://example.com")?;

.from_barcode(barcode_type, data) – згенерувати PDF зі штрихкодом

Потребує функції barcodes.

use pdf_oxide::writer::barcode::BarcodeType;

let pdf = PdfBuilder::new()
    .from_barcode(BarcodeType::Code128, "ABC-12345")?;

Розширені приклади

Повний ланцюжок налаштувань

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")?;

Власний розмір сторінки

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

У JavaScript/WASM статичні методи WasmPdf приймають необовʼязкові параметри title та author, забезпечуючи ту саму функціональність, що й метадані 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);

Налаштування розміру сторінки, полів, розміру шрифту та висоти рядка недоступні в API WASM — використовуйте параметри компонування за замовчуванням.

Методи виводу

Отримавши обʼєкт Pdf / WasmPdf, використовуйте ці методи для його виводу:

Метод Мова Опис
.save(path) Python, Rust Записати PDF у файл
.to_bytes() (Python) Python Отримати сирі байти PDF
.into_bytes() (Rust) Rust Спожити Pdf і повернути Vec<u8>
.toBytes() (JS) JavaScript Отримати PDF як Uint8Array

Повʼязані сторінки