Inleiding

De introductory post toont de basisvorm van conversie: Document.ToHtml(), Document.ToMarkdown(), en Document.ToDocx(), elk aangeroepen zonder argumenten om een redelijk standaardresultaat te krijgen. Elk van die methoden neemt een opties-object dat bepaalt wat er precies uitkomt — semantische markup versus een pixelgetrouwe kopie, een reflowable Word-document versus één die de exacte lay-out van elke pagina reproduceert.

Dit bericht behandelt die opties, plus een conversierichting die de introductie helemaal niet aanraakt: een document valideren tegen de PDF/A, PDF/X en PDF/UA standaarden en het aanpassen naar naleving van Document.ConvertToPdfA() en zijn verwanten.


Wat er inbegrepen is

HTML Export: Semantisch vs Vast

Document.ToHtml() aangeroepen zonder opties doorloopt de structuurboom van het document en genereert reflowable markup — koppen en alinea’s die natuurlijk leesbaar zijn in een browser op elke breedte. Die modus is afhankelijk van het document dat eerst getagd is (Document.CreateStructTree() of een gelijkwaardige tagging-stap); zonder een structuurboom valt de export terug op een eenvoudige heuristische body in plaats van echte semantische markup. Het doorgeven van { mode: 'fixed', fonts: 'embed' } schakelt volledig over naar een andere renderstrategie: elke pagina wordt een gepositioneerde SVG en absoluut geplaatste tekst, waarbij elk inbedbaar lettertype-programma wordt ingebed als een base64 WOFF @font-face zodat de pagina er hetzelfde uitziet zonder dat de lezer de lettertypen geïnstalleerd heeft.

// 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' });

De twee uitvoerformaten dienen verschillende doelen: semantische HTML is wat je wilt voor het lezen of herpubliceren van content op het web, en vaste HTML is wat je wilt wanneer de exacte visuele lay-out van de pagina ongewijzigd moet blijven in een browser.

Word- en Vector-exporten

Document.ToDocx() zonder opties aangeroepen produceert een doorstromende .docx: alinea’s en afbeeldingen die een tekstverwerker kan opnieuw laten omslaan en bewerken als een normaal document. Het doorgeven van { mode: 'textbox' } behoudt in plaats daarvan de geometrie van elke pagina, door inhoud in vaste tekstvakken te plaatsen in plaats van te laten doorstromen — dichter bij een getrouwe visuele kopie dan een bewerkbaar document. Page.ToSvg() rendert een enkele pagina naar een zelfstandige <svg>-string, handig wanneer een vector, resolutie-onafhankelijke kopie van één pagina nodig is in plaats van een rasterafbeelding.

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

Valideren en converteren naar PDF/A, PDF/X en PDF/UA

Document.ValidatePdfA(), Document.ValidatePdfX() en Document.ValidatePdfUa() controleren elk het document tegen een samengestelde, machinaal controleerbare subset van de bijbehorende norm — PDF/A (ISO 19005) voor langdurige archivering, PDF/X (ISO 15930) voor drukproductie, en PDF/UA (ISO 14289-1) voor toegankelijkheid — en retourneren een ValidationReport met een Passed-vlag die het resultaat samenvat. Document.ConvertToPdfA() (en het equivalent ConvertToPdfX()/ConvertToPdfUa()) probeert het document naar dat niveau te remediëren, vervolgens opnieuw te valideren, en retourneert een ConversionReport die opsomt welke acties daadwerkelijk zijn toegepast en welke problemen onopgelost blijven.

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`);

Conversie garandeert niet dat volledige naleving in één stap wordt bereikt — veelvoorkomende oorzaken van een resterende fout omvatten niet-ingesloten lettertypen en een ontbrekend output-intent, die beide verschijnen in conversion.unresolved.


Snelle start

Installeer het pakket en render vervolgens één pagina naar SVG en het volledige document naar doorstromende HTML en 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);

Ondersteunde formaten

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

Open source & licenties

Aspose.PDF FOSS voor TypeScript is uitgebracht onder de MIT-licentie, met de broncode gepubliceerd op GitHub. Er is geen evaluatiewatermerk, gebruikslimiet, of apart licentiebestand om te beheren, en de bibliotheek mag in commerciële producten worden gebruikt zonder royalty’s.

Het pakket bevindt zich momenteel op versie 0.1.0, wat wijst op actieve ontwikkeling in een vroeg stadium. Node.js (>=22) is de enige runtime-vereiste, en het pakket heeft geen andere externe afhankelijkheden.


Aan de slag

Gerelateerde bronnen