Wie man PDF-Dokumente in TypeScript konvertiert
Dieser Leitfaden zeigt, wie man PDF-Inhalte mit Aspose.PDF FOSS für TypeScript in andere Formate konvertiert. Page exportiert eine einzelne Seite als SVG oder ein Rasterbild; Document exportiert die gesamte Datei als HTML, Markdown oder DOCX und kann ein Dokument validieren und in PDF/A konvertieren. Es erfordert Node.js 22 oder neuer.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
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Überprüfen Sie die Installation, indem Sie die Document-Klasse in einer neuen TypeScript-Datei importieren — diese Zeile sollte ohne Fehler aufgelöst werden, sobald das Paket installiert ist:
import { Document } from '@asposefoss/pdf';Schritt 2: Erforderliche Klassen importieren
Importiere Document, um die Datei zu öffnen; die unten verwendeten Konvertierungsmethoden werden direkt auf den zurückgegebenen Document- und Page-Instanzen aufgerufen, sodass keine weiteren Importe erforderlich sind:
import { Document } from '@asposefoss/pdf';Schritt 3: Eine Seite in SVG oder ein Rasterbild konvertieren
Page.ToSvg() gibt einen eigenständigen <svg>-String zurück. Page.ToImage() rendert die Seite zu Rasterbytes; scale ist relativ zu den nativen 72 DPI des PDFs, sodass scale: 2 mit 144 DPI rendert:
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
Schritt 4: Ein Dokument in HTML oder Markdown konvertieren
Document.ToHtml() formatiert im Standardmodus (semantisch) den Inhalt aus dem Strukturbaum in Überschriften und Absätze neu; übergebe { mode: 'fixed' }, um stattdessen jede Seite als positioniertes SVG und absolut platzierte Texte wiederzugeben. Document.ToMarkdown() erzeugt GFM-Markdown für das gesamte Dokument:
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
Der semantische Modus liest den von Document.GetStructTree() / Document.CreateStructTree() erstellten Strukturbaum – bei einem nicht getaggten Dokument greift er auf einen heuristischen Body zurück und der Export verliert seine Überschriftenstruktur.
Schritt 5: Ein Dokument in DOCX konvertieren
Document.ToDocx() gibt .docx Bytes zurück, wobei der Inhalt neu fließt und Bilder eingebettet sind; übergebe { mode: 'textbox' }, um stattdessen die feste Geometrie jeder Seite beizubehalten, anstatt sie neu zu fließen:
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
Schritt 6: Validieren und Konvertieren zu PDF/A
Document.ValidatePdfA(level), Document.ValidatePdfX(level) und Document.ValidatePdfUa() geben ein ValidationReport zurück, das beschreibt, ob das Dokument dem genannten Standard entspricht. Document.ConvertToPdfA(level, opts) liefert ein ConversionReport, das auflistet, welche Korrekturen angewendet wurden und welche Probleme noch ungelöst sind. Führen Sie die Konvertierung auf einer Document.ExtractPages() Kopie durch, wenn das Live-Dokument weiterhin unverändert gespeichert werden muss:
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();Häufige Probleme und Lösungen
Document.ToHtml() verliert die Überschriftenstruktur. Der semantische Modus durchläuft den Strukturbaum, daher muss er nach einem Tagging-Durchlauf ausgeführt werden — entweder Document.AutoTag() oder handverfasstes Tagging via StructTreeRoot.Append(). ToHtml() greift zurück auf einen heuristischen Body, wenn GetStructTree() returns null.
ConvertToPdfA() ändert die Datei, die Sie unverändert behalten wollten. Führen Sie die Konvertierung auf einer Kopie von Document.ExtractPages(), dann speichern Sie die Kopie separat — ConvertToPdfA() verändert das Dokument, auf dem es aufgerufen wird.
ValidatePdfA() meldet beim ersten Ausführen Fehler. Eine häufige Ursache sind nicht eingebettete Standardschriften und ein fehlendes /OutputIntent — prüfen report.Passed und die einzelnen Regelbefunde, um zu sehen, welche Bedingungen nicht erfüllt wurden.
Page.ToImage() Ausgabe wirkt niedrig aufgelöst. scale ist relativ zu 72 DPI; erhöhen Sie sie (zum Beispiel { scale: 2 } für 144 DPI) für druckqualitative Ausgabe.
Häufig gestellte Fragen
Was ist der Unterschied zwischen semantischem und festem HTML-Export?
Der semantische Modus fließt das Dokument von seinem Strukturbaum in Markup um, das in einem Browser bei jeder Breite gut lesbar ist. Der feste Modus reproduziert jede Seite als positioniertes SVG und absolut platzierte Texte und entspricht exakt dem ursprünglichen Layout.
Bewahrt Document.ToDocx() das ursprüngliche Seitenlayout?
Standardmäßig fließt ToDocx() Inhalte um. Übergebe { mode: 'textbox' }, um stattdessen die feste Geometrie jeder Seite beizubehalten.
Wie prüfe ich, ob ein Dokument PDF/A erfüllt, bevor ich es konvertiere?
Rufe Document.ValidatePdfA(level) auf (zum Beispiel '2b') und inspiziere das zurückgegebene ValidationReport — dies meldet den aktuellen Zustand, ohne das Dokument zu ändern.
Kann ich nur einen Teil der Seiten konvertieren?
Ja — erstelle zuerst ein Subset Document mit Document.ExtractPages(), dann rufe die Konvertierungsmethode (ToHtml(), ToDocx(), ConvertToPdfA() und so weiter) für dieses Subset auf.