Jak převést PDF dokumenty v TypeScript

Jak převést PDF dokumenty v TypeScript

Tento návod ukazuje, jak převést obsah PDF do jiných formátů pomocí Aspose.PDF FOSS pro TypeScript. Page exportuje jednotlivou stránku jako SVG nebo rastrový obrázek; Document exportuje celý soubor jako HTML, Markdown nebo DOCX a může ověřit a převést dokument na PDF/A. Vyžaduje Node.js 22 nebo novější.

Krok za krokem

Krok 1: Nainstalujte balíček

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build

Ověřte instalaci importováním třídy Document v novém souboru TypeScript — tento řádek by se měl po instalaci balíčku načíst bez chyby:

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

Krok 2: Importujte požadované třídy

Importujte Document pro otevření souboru; konverzní metody použité níže jsou volány přímo na vrácených instancích Document a Page, takže nejsou potřeba další importy:

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

Krok 3: Převést stránku na SVG nebo rastrový obrázek

Page.ToSvg() vrací samostatný řetězec <svg>. Page.ToImage() vykresluje stránku do rastrových bajtů; scale je relativní k nativním 72 DPI PDF, takže scale: 2 vykresluje při 144 DPI:

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

const doc = Document.OpenFile('input.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI

Krok 4: Převést dokument na HTML nebo Markdown

Document.ToHtml() ve svém výchozím (sémantickém) režimu přetéká obsah ze stromu struktury do nadpisů a odstavců; předáním { mode: 'fixed' } místo toho reprodukujete každou stránku jako umístěné SVG a absolutně umístěný text. Document.ToMarkdown() vytváří GFM Markdown pro celý dokument:

const semanticHtml = doc.ToHtml(); // reflowable markup, all pages
const fixedHtml = doc.ToHtml({ mode: 'fixed', fonts: 'embed' }); // positioned, fonts embedded
const markdown = doc.ToMarkdown(); // GFM Markdown, all pages

Sémantický režim čte strom struktury vytvořený Document.GetStructTree() / Document.CreateStructTree() — u neoznačeného dokumentu se vrátí k heuristickému tělu a export ztratí svou strukturu nadpisů.


Krok 5: Převést dokument na DOCX

Document.ToDocx() vrací .docx bajtů s přetékajícím obsahem a zabalenými obrázky; předáním { mode: 'textbox' } zachováte pevnou geometrii každé stránky místo přetékání:

const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry

Krok 6: Ověřit a převést na PDF/A

Document.ValidatePdfA(level), Document.ValidatePdfX(level) a Document.ValidatePdfUa() vracejí ValidationReport, která popisuje, zda dokument splňuje uvedený standard. Document.ConvertToPdfA(level, opts) vrací ConversionReport, která uvádí, jaké opravy byly provedeny a které problémy zůstaly nevyřešeny. Proveďte převod na Document.ExtractPages() kopii, pokud musí být živý dokument zachován v nepřeváděném stavu:

const report = doc.ValidatePdfA('2b');
console.log(report.Passed);

const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');
console.log(conversion.applied.length, conversion.unresolved.length, conversion.passed);
copy.Save();

Časté problémy a opravy

Document.ToHtml() ztrácí strukturu nadpisů. Semantický režim prochází strom struktury, takže musí být spuštěn po průchodu označováním — buď Document.AutoTag() nebo ručně vytvořeným označováním pomocí StructTreeRoot.Append(). ToHtml() přepne na heuristické tělo, když GetStructTree() returns null.

ConvertToPdfA() změní soubor, který jste chtěli ponechat nepřevzatý. Spusťte konverzi na kopii z Document.ExtractPages(), pak uložte kopii samostatně — ConvertToPdfA() mění dokument, na který je volán.

ValidatePdfA() hlásí chyby při prvním spuštění. Častou příčinou jsou nevložená standardní písma a chybějící /OutputIntent — zkontrolujte report.Passed a jednotlivé nálezy pravidel, abyste viděli, které podmínky nebyly splněny.

Page.ToImage() výstup vypadá nízké rozlišení. scale je relativní k 72 DPI; zvyšte jej (například { scale: 2 } na 144 DPI) pro výstup v tiskové kvalitě.

Často kladené otázky

Jaký je rozdíl mezi sémantickým a pevým HTML exportem?

Režim sémantického exportu přetéká dokument ze svého stromu struktury do značkování, které se v prohlížeči dobře čte při jakékoli šířce. Režim pevného exportu reprodukuje každou stránku jako umístěné SVG a absolutně umístěný text, přesně odpovídající původnímu rozvržení.

Zachovává Document.ToDocx() původní rozvržení stránky?

Ve výchozím nastavení ToDocx() přetéká obsah. Předáním { mode: 'textbox' } místo toho zachová pevnou geometrii každé stránky.

Jak mohu zkontrolovat, zda dokument splňuje PDF/A před jeho konverzí?

Zavolejte Document.ValidatePdfA(level) (například '2b') a prohlédněte si vrácený ValidationReport — tento hlásí aktuální stav, aniž by dokument upravoval.

Mohu převést pouze podmnožinu stránek?

Ano — nejprve vytvořte podmnožinu Document pomocí Document.ExtractPages(), pak zavolejte konverzní metodu (ToHtml(), ToDocx(), ConvertToPdfA() a tak dále) na tuto podmnožinu.

Viz také:

 Čeština