Comment convertir des documents PDF en TypeScript
Ce guide montre comment convertir le contenu PDF en d’autres formats avec Aspose.PDF FOSS pour TypeScript. Page exporte une page unique au format SVG ou en image raster; Document exporte le fichier complet au format HTML, Markdown ou DOCX, et peut valider et convertir un document en PDF/A. Il nécessite Node.js22 ou version ultérieure.
Guide étape par étape
Étape 1: installer le package
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildVérifiez l’installation en important la classe Document dans un nouveau fichier TypeScript — cette ligne devrait se résoudre sans erreur une fois le package installé:
import { Document } from '@asposefoss/pdf';Étape 2: importer les classes requises
Importez Document pour ouvrir le fichier; les méthodes de conversion utilisées ci-dessous sont appelées directement sur les instances Document et Page retournées, aucune importation supplémentaire n’est nécessaire:
import { Document } from '@asposefoss/pdf';Étape 3: Convertir une page en SVG ou en image raster
Page.ToSvg() renvoie une chaîne <svg> autonome. Page.ToImage() rend la page en octets raster; scale est relative aux 72DPI natifs du PDF, ainsi scale: 2 rend à 144DPI:
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
Étape 4: Convertir un document en HTML ou en Markdown
Document.ToHtml() en mode par défaut (sémantique) réorganise le contenu de l’arbre de structure en titres et paragraphes; transmettez { mode: 'fixed' } pour reproduire chaque page sous forme de SVG positionné et de texte placé absolument à la place. Document.ToMarkdown() génère du Markdown GFM pour l’ensemble du 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
Le mode sémantique lit l’arbre de structure construit par Document.GetStructTree() / Document.CreateStructTree() — sur un document non balisé, il revient à un corps heuristique et l’exportation perd sa structure de titres.
Étape 5: Convertir un document en DOCX
Document.ToDocx() renvoie .docx octets avec le contenu réorganisé et les images emballées à l’intérieur; transmettez { mode: 'textbox' } pour conserver la géométrie fixe propre à chaque page au lieu de réorganiser:
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
Étape 6: valider et convertir en PDF/A
Document.ValidatePdfA(level), Document.ValidatePdfX(level) et Document.ValidatePdfUa() renvoient un ValidationReport décrivant si le document respecte la norme nommée. Document.ConvertToPdfA(level, opts) renvoie un ConversionReport répertoriant les corrections appliquées et les problèmes qui restent non résolus. Exécutez la conversion sur une copie Document.ExtractPages() lorsque le document en direct doit encore être enregistré non converti:
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();Problèmes courants et correctifs
Document.ToHtml() perd la structure des titres. Le mode sémantique parcourt l’arbre de la structure, il doit donc s’exécuter après une passe de marquage — soit Document.AutoTag() ou un marquage fait à la main via StructTreeRoot.Append(). ToHtml() revient à un corps heuristique lorsque GetStructTree() returns null.
ConvertToPdfA() modifie le fichier que vous vouliez laisser non converti. Exécutez la conversion sur une copie provenant de Document.ExtractPages(), puis enregistrez la copie séparément — ConvertToPdfA() modifie le document sur lequel il est invoqué.
ValidatePdfA() signale des échecs lors de la première exécution. Une cause fréquente est la non-incorporation des polices standard et un manque de /OutputIntent — vérifier report.Passed et les résultats individuels des règles pour voir quelles conditions n’ont pas été remplies.
Page.ToImage() la sortie apparaît en basse résolution. scale est relative à 72 DPI; augmentez-le (par exemple { scale: 2 } pour 144 DPI) pour une sortie de qualité impression.
Foire aux questions
Quelle est la différence entre l’exportation sémantique et fixe HTML ?
Le mode sémantique reformate le document à partir de son arbre de structure en un balisage qui s’affiche correctement dans un navigateur, quelle que soit la largeur. Le mode fixe reproduit chaque page sous forme de SVG positionné et de texte placé absolument, reproduisant exactement la mise en page d’origine.
Est-ce que Document.ToDocx() préserve la mise en page originale de la page ?
Par défaut, ToDocx() reformate le contenu. Utilisez { mode: 'textbox' } pour conserver la géométrie fixe propre à chaque page à la place.
Comment vérifier si un document satisfait PDF/A avant de le convertir?
Appelez Document.ValidatePdfA(level) (par exemple '2b') et inspectez le ValidationReport retourné — cela indique l’état actuel sans modifier le document.
Puis-je convertir seulement un sous-ensemble de pages?
Oui — construisez d’abord un sous-ensemble Document avec Document.ExtractPages(), puis appelez la méthode de conversion (ToHtml(), ToDocx(), ConvertToPdfA(), etc.) sur cet ensemble.