Hoe PDF-documenten te converteren in TypeScript

Hoe PDF-documenten te converteren in TypeScript

Deze gids toont hoe je PDF-inhoud kunt converteren naar andere formaten met Aspose.PDF FOSS voor TypeScript. Page exporteert een enkele pagina als SVG of een rasterafbeelding; Document exporteert het hele bestand als HTML, Markdown of DOCX, en kan een document valideren en converteren naar PDF/A. Het vereist Node.js 22 of later.

Stapsgewijze gids

Stap 1: Installeer het pakket

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

Verifieer de installatie door de Document klasse te importeren in een nieuw TypeScript-bestand — deze regel zou zonder fout moeten oplossen zodra het pakket is geïnstalleerd:

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

Stap 2: Importeer vereiste klassen

Importeer Document om het bestand te openen; de conversiemethoden die hieronder worden gebruikt, worden direct aangeroepen op de geretourneerde Document en Page instanties, dus verdere imports zijn niet nodig:

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

Stap 3: Converteer een pagina naar SVG of een rasterafbeelding

Page.ToSvg() retourneert een zelfstandige <svg> string. Page.ToImage() rendert de pagina naar rasterbytes; scale is relatief ten opzichte van de native 72 DPI van de PDF, dus scale: 2 rendert op 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

Stap 4: Converteer een document naar HTML of Markdown

Document.ToHtml() in de standaard (semantische) modus herformatteert de inhoud van de structuurbomen naar koppen en alinea’s; geef { mode: 'fixed' } door om elke pagina in plaats daarvan als gepositioneerde SVG en absoluut geplaatste tekst te reproduceren. Document.ToMarkdown() produceert GFM Markdown voor het gehele document:

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

De semantische modus leest de structuurbomen die zijn opgebouwd door Document.GetStructTree() / Document.CreateStructTree() — bij een niet-gemarkeerd document valt hij terug op een heuristische body en verliest de export zijn kopstructuur.


Stap 5: Converteer een document naar DOCX

Document.ToDocx() retourneert .docx bytes met hergeformatteerde inhoud en ingepakte afbeeldingen; geef { mode: 'textbox' } door om i.p.v. te herformatteren de eigen vaste geometrie van elke pagina te behouden:

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

Stap 6: Valideren en converteren naar PDF/A

Document.ValidatePdfA(level), Document.ValidatePdfX(level) en Document.ValidatePdfUa() retourneren een ValidationReport die beschrijft of het document aan de genoemde standaard voldoet. Document.ConvertToPdfA(level, opts) retourneert een ConversionReport met een lijst van de toegepaste correcties en welke problemen nog onopgelost zijn. Voer de conversie uit op een Document.ExtractPages() kopie wanneer het live-document nog onveranderd moet worden bewaard:

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

Veelvoorkomende problemen en oplossingen

Document.ToHtml() verliest de kopstructuur. Semantische modus doorloopt de structuurboom, dus moet deze worden uitgevoerd na een tagging-pass — of Document.AutoTag() of handmatig geschreven tagging via StructTreeRoot.Append(). ToHtml() valt terug op een heuristische body wanneer GetStructTree() returns null.

ConvertToPdfA() wijzigt het bestand dat je onbewerkte wilde behouden. Voer de conversie uit op een kopie van Document.ExtractPages(), sla de kopie vervolgens apart op — ConvertToPdfA() mutateert het document waarop het wordt aangeroepen.

ValidatePdfA() rapporteert fouten de eerste keer dat het wordt uitgevoerd. Een veelvoorkomende oorzaak is het ontbreken van ingebedde standaardlettertypen en een ontbrekende /OutputIntent — controleer report.Passed en de individuele regelbevindingen om te zien welke voorwaarden niet werden vervuld.

Page.ToImage() output ziet er laag-resolutie uit. scale is relatief ten opzichte van 72 DPI; verhoog het (bijvoorbeeld { scale: 2 } voor 144 DPI) voor afdrukkwaliteit output.

Veelgestelde vragen

Wat is het verschil tussen semantische en vaste HTML export?

Semantische modus stroomt het document opnieuw vanuit de structuurboom naar opmaak die er in een browser bij elke breedte goed uitziet. Vaste modus reproduceert elke pagina als gepositioneerde SVG en absoluut geplaatste tekst, die exact overeenkomt met de oorspronkelijke lay-out.

Behoudt Document.ToDocx() de oorspronkelijke pagina-indeling?

Standaard stroomt ToDocx() de inhoud opnieuw. Geef { mode: 'textbox' } door om in plaats daarvan de vaste geometrie van elke pagina te behouden.

Hoe controleer ik of een document voldoet aan PDF/A voordat ik het converteer?

Roep Document.ValidatePdfA(level) aan (bijvoorbeeld '2b') en inspecteer de geretourneerde ValidationReport — dit rapporteert de huidige status zonder het document te wijzigen.

Kan ik alleen een subset van pagina’s converteren?

Ja — bouw eerst een subset Document met Document.ExtractPages(), roep vervolgens de conversiemethode (ToHtml(), ToDocx(), ConvertToPdfA(), enzovoort) aan op die subset.

Zie ook

 Nederlands