Wprowadzenie

post wprowadzający pokazuje podstawowy kształt konwersji: Document.ToHtml(), Document.ToMarkdown() i Document.ToDocx(), każdy wywoływany bez argumentów, aby uzyskać rozsądny domyślny wynik. Każda z tych metod przyjmuje obiekt opcji, który zmienia to, co faktycznie jest zwracane — semantyczny znacznik versus wierna kopia pikselowa, elastyczny dokument Word versus taki, który odtwarza dokładny układ każdej strony.

Ten wpis omawia te opcje, a także kierunek konwersji, którego wprowadzenie w ogóle nie porusza: weryfikację dokumentu względem standardów PDF/A, PDF/X i PDF/UA oraz jego naprawę w kierunku zgodności z Document.ConvertToPdfA() i jego pokrewnymi.


Co zawiera

HTML Export: Semantyczny vs Stały

Document.ToHtml() wywołany bez opcji przegląda drzewo struktury dokumentu i generuje elastyczny znacznik — nagłówki i akapity, które czytają się naturalnie w przeglądarce przy dowolnej szerokości. Ten tryb zależy od wcześniejszego otagowania dokumentu (Document.CreateStructTree() lub równoważnego kroku tagowania); bez drzewa struktury eksport przechodzi na prosty heurystyczny korpus zamiast prawdziwego semantycznego znacznika. Przekazanie { mode: 'fixed', fonts: 'embed' } przełącza całkowicie na inną strategię renderowania: każda strona staje się pozycjonowanym SVG i absolutnie umieszczonym tekstem, przy czym każdy osadzony program czcionki jest wstawiony jako base64 WOFF @font-face, dzięki czemu strona wygląda tak samo, nawet jeśli czytelnik nie ma zainstalowanych czcionek.

// Semantic mode reflows from the structure tree, so this must run after the
// tagging pass: ToHtml falls back to a heuristic body when GetStructTree() is
// null, and the export loses its heading structure silently.
const semantic = doc.ToHtml();
const fixed = doc.ToHtml({ mode: 'fixed', fonts: 'embed' });

Dwa wyjścia służą różnym celom: semantyczny HTML jest tym, czego potrzebujesz do czytania lub ponownego publikowania treści w sieci, a stały HTML jest tym, czego potrzebujesz, gdy dokładny wizualny układ strony musi pozostać niezmieniony w przeglądarce.

Eksporty Word i wektorowe

Document.ToDocx() wywołany bez opcji generuje przetworzone .docx: akapity i obrazy, które edytor tekstu może ponownie zawijać i edytować jak zwykły dokument. Przekazanie { mode: 'textbox' } zamiast tego zachowuje własną geometrię każdej strony, umieszczając zawartość w stałych polach tekstowych zamiast pozwalać na przepływ — bliżej wiernej kopii wizualnej niż edytowalnego dokumentu. Page.ToSvg() renderuje pojedynczą stronę do samodzielnego ciągu <svg>, przydatnego, gdy potrzebna jest wektorowa, niezależna od rozdzielczości kopia jednej strony zamiast obrazu rastrowego.

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

const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg();               // standalone <svg> string
const docx = doc.ToDocx();                       // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' });   // .docx keeping each page's own geometry

Walidacja i konwersja do PDF/A, PDF/X i PDF/UA

Document.ValidatePdfA(), Document.ValidatePdfX() i Document.ValidatePdfUa() sprawdzają dokument względem starannie dobranego, maszynowo weryfikowalnego podzbioru odpowiedniej normy — PDF/A (ISO 19005) dla długoterminowego archiwizowania, PDF/X (ISO 15930) dla produkcji drukowanej oraz PDF/UA (ISO 14289-1) dla dostępności — i zwracają ValidationReport z flagą Passed podsumowującą wynik. Document.ConvertToPdfA() (oraz równoważny ConvertToPdfX()/ConvertToPdfUa()) próbuje naprawić dokument do tego poziomu, po czym ponownie go waliduje, zwracając ConversionReport, który wymienia, które działania faktycznie zastosowano i które problemy pozostają nierozwiązane.

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

const doc = Document.OpenFile('in.pdf');
const pdfa = doc.ValidatePdfA('2b');
console.log(`validate: PDF/A-2b ${pdfa.Passed ? 'passes' : 'fails'}`);

// Conversion runs against a copy: the live document is still saved
// unconverted, so ConvertToPdfA must never touch it directly.
const pages = doc.Pages;
const allPages: number[] = [];
for (let i = 1; i <= pages.length; i++) allPages.push(i);
const copy = doc.ExtractPages(allPages);
const conversion = copy.ConvertToPdfA('2b');

console.log(`pdf/a convert: ${conversion.applied.length} action(s) applied, `
  + `${conversion.unresolved.length} unresolved`);
console.log(`result: ${conversion.passed ? 'passes' : 'still fails'} PDF/A-2b`);

Konwersja nie gwarantuje pełnej zgodności w jednym przebiegu — częstymi przyczynami pozostających niepowodzeń są nieosadzone czcionki oraz brakujący cel wyjściowy, które oba pojawiają się w conversion.unresolved.


Szybki start

Zainstaluj pakiet, a następnie renderuj jedną stronę do SVG oraz cały dokument do przetworzonego HTML i DOCX:

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
import { Document } from '@asposefoss/pdf';

const doc = Document.OpenFile('in.pdf');

const svg = doc.Pages[0].ToSvg();   // standalone <svg> string
const html = doc.ToHtml();          // reflowable HTML (falls back without a structure tree)
const docx = doc.ToDocx();          // .docx bytes, reflowed, images in the package

// fs.writeFileSync('page1.svg', svg);
// fs.writeFileSync('out.html', html);
// fs.writeFileSync('out.docx', docx);

Obsługiwane formaty

FormatRozszerzenieOdczytZapis
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

Open Source i licencjonowanie

Aspose.PDF FOSS dla TypeScript jest wydany na licencji MIT, a kod źródłowy jest opublikowany na GitHub. Nie ma żadnego znaku wodnego wersji testowej, limitu użycia ani oddzielnego pliku licencyjnego do zarządzania, a biblioteka może być używana w produktach komercyjnych bez opłat licencyjnych.

Pakiet jest obecnie w wersji 0.1.0, co odzwierciedla aktywny rozwój we wczesnym etapie. Node.js (>=22) jest jedynym wymogiem środowiska uruchomieniowego, a pakiet nie ma żadnych innych zależności zewnętrznych.


Rozpoczęcie

Powiązane zasoby