Jádro API

Základní API

Tento průvodce ukazuje, jak otevřít, upravit, sestavit a uložit PDF dokumenty pomocí tříd Document a Page — vstupních bodů pro každou operaci v Aspose.PDF FOSS pro TypeScript. Document načítá, vytváří, sestavuje a ukládá celé PDF soubory; Page, dosažitelné přes doc.Pages, poskytuje operace s textem, obrázkem, anotacemi a obsahovým proudem na úrovni jednotlivých stránek.


Životní cyklus dokumentu

Document.OpenFile() otevře PDF z cesty k souboru; Document.Open() přijímá Uint8Array v paměti. Stránky lze prohlížet a upravovat přímo, a Document.WriteTo() zapíše výsledek zpět — volitelně se zkompresí xref-stream a object-stream.

import { Document } from '@asposefoss/pdf';

// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');

// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2);                 // 1-based page number
doc.Reorder([3, 1, 2]);

// Metadata
doc.SetMetadata({ title: 'Report', author: 'Jane', custom: { Dept: 'R&D' } });

// Save
doc.WriteTo('output.pdf');         // or: const bytes = doc.Save();
doc.WriteTo('small.pdf', { compressed: true }); // xref stream + object streams

Rozdělování, slučování a extrahování stránek

Document.Split() vrací jeden Document na stránku. Document.ExtractPages() přijímá seznam stránek číslovaný od jedné, povolující opakování, a vrací nový Document pouze s těmito stránkami. Document.Append() a Document.InsertPage() kopírují stránky mezi dokumenty a Document.Merge() kombinuje několik dokumentů do jednoho.

const parts = doc.Split();                       // one Document per page
const chapter = doc.ExtractPages([3, 4, 5]);     // subset (1-based, repeats allowed) as a new Document

docA.Append(docB);                               // copy all of docB's pages onto docA
docA.InsertPage(1, docB.Pages[0]);               // copy a single page across documents

Vytvoření nového dokumentu

Document.New() zahajuje prázdný dokument na daném PageFormat. Page.AddText() umisťuje text na určenou pozici a Document.AddPage() přidává další stránky, včetně otočeného formátu, jako je PageFormat.A4.landscape().

import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4);          // one blank A4 page
doc.Pages[0].AddText('Hello', 72, 720, { fontSize: 14 });
doc.AddPage(PageFormat.A4.landscape());           // append more as you go
doc.WriteTo('scratch.pdf');

Vodoznaky a čísla stránek

Page.AddText() také podporuje rotaci, barvu a průhlednost, což stačí k vykreslení čísla stránky a úhlového vodoznaku bez dalších tříd.

const doc = Document.OpenFile('in.pdf');
const page = doc.Pages[0];

// Page number, right-aligned near the bottom-right corner.
const w = page.Rect[2] - page.Rect[0];
page.AddText(`Page ${page.Number}`, w - 40, 20, { fontSize: 10, align: 'right' });

// Semi-transparent diagonal watermark, centered on the page.
page.AddText('DRAFT', page.Rect[2] / 2, page.Rect[3] / 2, {
  font: 'Times-Bold', fontSize: 64, color: [0.7, 0.7, 0.7], opacity: 0.4, rotate: 45, align: 'center',
});

doc.WriteTo('out.pdf');

Introspekce obsahového streamu

parseContentStream() dekóduje surový /Contents stream stránky do seznamu dvojic operátor/operand a serializeContentStream() převádí upravený seznam operátorů zpět na bajty.

import { parseContentStream, serializeContentStream } from '@asposefoss/pdf';

const ops = parseContentStream(doc.Pages[0].Contents);
// ops: { operator: string, operands: PdfObject[], inlineImage?: {...} }[]
for (const op of ops) {
  if (op.operator === 'Tj') console.log('text op:', op.operands);
}
const bytes = serializeContentStream(ops);       // round-trips operators + operands

Vícesloupcový tok textu

Page.AddTextBlock() umístí dlouhý řetězec textu do obdélníkového regionu a vrátí jakýkoli text, který se nevešel, což lze předat do druhého volání k pokračování toku do dalšího sloupce.

const rest = page.AddTextBlock(longText, [72, 600, 200, 150], {
  font: 'Times-Roman', fontSize: 11, align: 'justify', valign: 'top', leading: 14,
});
if (rest) page.AddTextBlock(rest, [300, 600, 200, 150]); // continue into a 2nd column

Tipy a osvědčené postupy

  • Použijte Document.OpenFile() pro cesty k souborům a Document.Open() pro data Uint8Array v paměti.
  • Čísla stránek předávaná metodám, jako jsou RemovePage() a ExtractPages(), jsou číslována od 1, zatímco doc.Pages je pole číslované od 0.
  • Předáte { compressed: true } do Document.WriteTo(), abyste povolili kompresi xref-stream a object-stream při výstupu.
  • Document.ExtractPages() přijímá opakovaná čísla stránek, takže stejná zdrojová stránka může být ve výsledku uvedena vícekrát.
  • Přečtěte page.Rect, abyste spočítali pozice relativně k skutečné šířce a výšce stránky, místo aby byly souřadnice pevně zakódovány.

Časté problémy

ProblémPříčinaOprava
Document.Open() / OpenFile() vyvolá InvalidPasswordErrorPDF je chráněn heslem a nebylo zadáno žádné heslo (nebo bylo zadáno špatné)Předat { password: '...' } do Document.OpenFile() / Document.Open()
RemovePage() odstraňuje špatnou stránkuČísla stránek předávaná do RemovePage() jsou číslována od jedné, nikoli od nulyPředávejte číslo stránky založené na 1, odlišné od indexování pole doc.Pages
WriteTo() výstup je větší, než se očekávaloVýchozí uložení nepoužívá kompresi xref/object-streamPředávejte { compressed: true } do Document.WriteTo()

FAQ

Přijímá Document.Open() jak cesty k souborům, tak data v paměti?

Document.OpenFile() otevírá ze souborové cesty; Document.Open() přijímá Uint8Array paměťových bajtů.

Je číslování stránek 0-základní nebo 1-základní?

Obojí, v závislosti na API: doc.Pages je prosté 0-základní pole, ale metody jako RemovePage() a ExtractPages() používají 1-základní čísla stránek.

Mohu šifrovat dokument při jeho ukládání?

Ano — předávejte volbu encrypt do WriteTo() / Save() s algorithm: 'aes256' | 'aes128' | 'rc4' a volitelnými hesly uživatele/vlastníka.

Jak mohu snížit velikost výstupního souboru?

Předáte { compressed: true } do Document.WriteTo() pro povolení komprese xref-stream a object-stream.

Mohu prohlížet operátory surového content-stream stránky?

Ano — parseContentStream(doc.Pages[0].Contents) vrací seznam operátorů a serializeContentStream() převádí upravený seznam zpět na bajty.


API Reference Shrnutí

Třída / MetodaPopis:
DocumentCentrální vstupní bod pro vytváření, načítání a ukládání PDF dokumentů
Document.OpenFile() / Document.Open()Načtěte PDF ze souborové cesty nebo z paměťových bajtů
Document.New()Vytvořte prázdný dokument s daným PageFormat
Document.WriteTo() / Document.Save()Zapište dokument na cestu souboru nebo vraťte bajty
Document.Split() / Document.Merge() / Document.ExtractPages()Rozdělujte, slučujte a extrahujte stránky napříč dokumenty
Document.Append() / Document.InsertPage()Zkopírujte stránky z jednoho dokumentu do druhého
PageJedna stránka PDF; poskytuje metody pro text, obrázek, anotaci a content-stream
Page.AddText() / Page.AddTextBlock()Přidejte na stránku umístěný nebo proudící text
parseContentStream() / serializeContentStream()Analyzujte a znovu serializujte operátory surového content-streamu stránky

Viz také:

 Čeština