Introduktion

Det introduktionsinlägget visar den grundläggande strukturen för konvertering: Document.ToHtml(), Document.ToMarkdown() och Document.ToDocx(), där varje anropas utan argument för att få en rimlig standard. Var och en av dessa metoder tar ett options-objekt som förändrar vad som faktiskt blir utdata — semantisk markup kontra en pixel-trogen kopia, ett omflödesbart Word-dokument kontra ett som reproducerar varje sidas exakta layout.

Detta inlägg täcker dessa alternativ, samt en konverteringsriktning som introduktionen inte berör alls: validering av ett dokument mot PDF/A, PDF/X och PDF/UA-standarderna och att åtgärda det för att uppfylla Document.ConvertToPdfA() och dess syskon.


Vad som ingår

HTML Export: Semantisk vs Fast

Document.ToHtml() utan några alternativ går igenom dokumentets strukturtree och genererar omflödesbar markup — rubriker och stycken som läses naturligt i en webbläsare oavsett bredd. Det läget förutsätter att dokumentet först taggats (Document.CreateStructTree() eller ett motsvarande taggningssteg); utan en strukturtree faller exporten tillbaka till en enkel heuristisk kropp istället för sann semantisk markup. Att ange { mode: 'fixed', fonts: 'embed' } växlar helt till en annan renderingsstrategi: varje sida blir placerad som SVG och absolut placerad text, där varje inbäddningsbar teckensnittsprogram inkluderas som en base64 WOFF @font-face så att sidan ser likadan ut utan att läsaren har teckensnitten installerade.

// 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 två utdata tjänar olika syften: semantisk HTML är det du vill ha för att läsa eller återpublicera innehåll på webben, och fast HTML är det du vill ha när sidans exakta visuella layout måste överleva oförändrad i en webbläsare.

Word- och vektorexport

Document.ToDocx() anropad utan alternativ producerar en omflödad .docx: stycken och bilder som en ordbehandlare kan omsluta och redigera som ett vanligt dokument. Att skicka { mode: 'textbox' } istället behåller varje sidas egen geometri, placerar innehållet i fasta textrutor snarare än att låta det omflödas — närmare en trogen visuell kopia än ett redigerbart dokument. Page.ToSvg() renderar en enskild sida till en fristående <svg>-sträng, användbart när en vektor, upplösningsoberoende kopia av en sida behövs snarare än en rasterbild.

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

Validera och konvertera till PDF/A, PDF/X och PDF/UA

Document.ValidatePdfA(), Document.ValidatePdfX() och Document.ValidatePdfUa() kontrollerar varje dokument mot en kuraterad, maskinläsbar delmängd av den motsvarande standarden — PDF/A (ISO 19005) för långtidsarkivering, PDF/X (ISO 15930) för tryckproduktion och PDF/UA (ISO 14289-1) för tillgänglighet — och returnerar en ValidationReport med en Passed-flagga som summerar resultatet. Document.ConvertToPdfA() (och den motsvarande ConvertToPdfX()/ConvertToPdfUa()) försöker åtgärda dokumentet till den nivån, validerar sedan på nytt och returnerar en ConversionReport som listar vilka åtgärder som faktiskt tillämpades och vilka problem som fortfarande är olösta.

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

Konvertering garanteras inte att uppnå full efterlevnad i ett steg — vanliga orsaker till kvarstående fel inkluderar icke-inbäddade typsnitt och en saknad output-intent, som båda visas i conversion.unresolved.


Snabbstart

Installera paketet, rendera sedan en sida till SVG och hela dokumentet till omflödad HTML och 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);

Stödda format

FormatFiländelseLäsaSkriva
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

Öppen källkod & licensiering

Aspose.PDF FOSS för TypeScript är släppt under MIT-licensen, med källkoden publicerad på GitHub. Det finns ingen evalueringsvattenstämpel, ingen användningsgräns eller separat licensfil att hantera, och biblioteket får användas i kommersiella produkter utan royalties.

Paketet är för närvarande på version 0.1.0, vilket speglar aktiv utveckling i ett tidigt stadium. Node.js (>=22) är det enda körkravet, och paketet har inga andra tredjepartsberoenden.


Komma igång

Relaterade resurser