Hur man konverterar PDF-dokument i TypeScript

Hur man konverterar PDF-dokument i TypeScript

Den här guiden visar hur man konverterar PDF-innehåll till andra format med Aspose.PDF FOSS för TypeScript. Page exporterar en enskild sida som SVG eller en rasterbild; Document exporterar hela filen som HTML, Markdown eller DOCX, och kan validera och konvertera ett dokument till PDF/A. Den kräver Node.js 22 eller senare.

Steg-för-steg-guide

Steg 1: Installera paketet

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

Verifiera installationen genom att importera Document-klassen i en ny TypeScript-fil — den här raden bör lösa utan fel när paketet är installerat:

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

Steg 2: Importera nödvändiga klasser

Importera Document för att öppna filen; konverteringsmetoderna som används nedan anropas direkt på de returnerade Document- och Page-instanserna, så inga ytterligare importeringar behövs:

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

Steg 3: Konvertera en sida till SVG eller en rasterbild

Page.ToSvg() returnerar en fristående <svg>-sträng. Page.ToImage() renderar sidan till rasterbyte; scale är relativt till PDF:ens ursprungliga 72 DPI, så scale: 2 renderas med 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

Steg 4: Konvertera ett dokument till HTML eller Markdown

Document.ToHtml() i sitt standard (semantiska) läge omskapar innehåll från strukturtträdet till rubriker och stycken; skicka { mode: 'fixed' } för att återge varje sida som positionerad SVG och absolut placerad text istället. Document.ToMarkdown() producerar GFM-Markdown för hela dokumentet:

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

Semantiskt läge läser strukturträdet som byggts av Document.GetStructTree() / Document.CreateStructTree() — i ett otaggat dokument faller det tillbaka på en heuristisk kropp och exporten förlorar sin rubrikstruktur.


Steg 5: Konvertera ett dokument till DOCX

Document.ToDocx() returnerar .docx byte med innehåll omskapat och bilder paketerade inuti; skicka { mode: 'textbox' } för att behålla varje sidas egna fasta geometri istället för att omskapa:

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

Steg 6: Validera och konvertera till PDF/A

Document.ValidatePdfA(level), Document.ValidatePdfX(level) och Document.ValidatePdfUa() returnerar en ValidationReport som beskriver huruvida dokumentet uppfyller den namngivna standarden. Document.ConvertToPdfA(level, opts) returnerar en ConversionReport som listar vilka korrigeringar som tillämpades och vilka problem som förblir olösta. Kör konverteringen på en Document.ExtractPages() kopia när det levande dokumentet fortfarande måste sparas okonverterat:

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

Vanliga problem och lösningar

Document.ToHtml() förlorar rubrikstruktur. Semantic mode traverserar strukturträdet, så det måste köras efter ett taggningspass — antingen Document.AutoTag() eller handskriven taggning via StructTreeRoot.Append(). ToHtml() faller tillbaka till en heuristisk body när GetStructTree() returns null.

ConvertToPdfA() ändrar filen du menade att behålla oförändrad. Kör konverteringen på en kopia från Document.ExtractPages(), spara sedan kopian separat — ConvertToPdfA() muterar dokumentet den kallas på.

ValidatePdfA() rapporterar fel första gången den körs. En vanlig orsak är oinbäddade standardtypsnitt och en saknad /OutputIntent — kontrollera report.Passed och de individuella regelresultaten för att se vilka villkor som inte uppfylldes.

Page.ToImage() utdata ser lågupplöst ut. scale är relativt 72 DPI; höj den (till exempel { scale: 2 } för 144 DPI) för utskriftskvalitet.

Vanliga frågor

Vad är skillnaden mellan semantisk och fast HTML export?

Semantiskt läge omflödar dokumentet från dess strukturt träd till markup som läses väl i en webbläsare oavsett bredd. Fast läge återger varje sida som placerad SVG och absolut placerad text, vilket exakt matchar den ursprungliga layouten.

Bevarar Document.ToDocx() den ursprungliga sidlayouten?

Som standard omflödar ToDocx() innehållet. Skicka { mode: 'textbox' } för att behålla varje sidas egna fasta geometri istället.

Hur kan jag kontrollera om ett dokument uppfyller PDF/A innan jag konverterar det?

Anropa Document.ValidatePdfA(level) (till exempel '2b') och inspektera det returnerade ValidationReport — detta rapporterar det aktuella tillståndet utan att modifiera dokumentet.

Kan jag bara konvertera en del av sidorna?

Ja — bygg först en delmängd Document med Document.ExtractPages(), sedan anropa konverteringsmetoden (ToHtml(), ToDocx(), ConvertToPdfA() och så vidare) på den delmängden.

Se även

 Svenska