Troubleshooting

Troubleshooting

Diese Seite sammelt Lösungen für die häufigsten Probleme, die bei Aspose.PDF FOSS für die Signatur-, Anmerkungs-, Schwärzungs-, Zeichen-, Konvertierungs- und Text-APIs von TypeScript auftreten.

Asynchrone Methoden (Sign, Certify, VerifySignatures) scheinen nichts zu tun

Document.Sign(), Document.Certify() und Document.VerifySignatures() geben alle ein Promise zurück. Einen Aufruf ohne await lässt die Ausführung sofort fortsetzen — ein nachfolgendes doc.WriteTo() oder doc.Save() kann ausgeführt werden, bevor die Signatur tatsächlich geschrieben wurde, und ein nachfolgendes console.log() des Verifizierungsergebnisses protokolliert ein ungelöstes Promise anstelle des SignatureReport[]-Arrays:

// Wrong — WriteTo can race ahead of Sign:
approving.Sign(identity, opts);
approving.WriteTo('signed.pdf');

// Correct:
await approving.Sign(identity, opts);
approving.WriteTo('signed.pdf');

Siehe die Security Anleitung für den vollständigen certify-then-sign-Ablauf.

SearchAnnotationText() und SearchAnnotations() geben für denselben Text unterschiedliche Ergebnisse zurück

Diese beiden Suchmethoden sind auf derselben Seite in beiden Richtungen disjunkt. SearchAnnotationText() trifft wörtliche Annotations-Metadaten (/Contents, /T, /Subj); SearchAnnotations() trifft das rendered Text, der von der eigenen Darstellung einer Markup-Annotation gezeichnet wird (zum Beispiel ein FreeText body). Ein Wert, der nur in /Contents wird von einem gefunden und vom anderen übersehen:

const metadataHits = page.SearchAnnotationText('confidential'); // matches /Contents, /T, /Subj
const renderedHits = page.SearchAnnotations('confidential');    // matches rendered markup text

Keine der beiden Methoden durchsucht normalen Seitentext — verwende Page.GetText() or Page.Search() dazu. Siehe die Anmerkungen Leitfaden für die vollständige Annotation API.

Eine Redaktionsmarke allein entfernt keinen Inhalt

Page.AddRedact() zeichnet nur ein RedactAnnotation über einen Bereich — der darunter liegende Inhalt bleibt unverändert und weiterhin kopier-auswählbar, bis Page.ApplyRedactions() ausgeführt wird und den Inhaltsstrom destruktiv überschreibt. Hinzugefügte Markierungen after ApplyRedactions() hat bereits ausgeführt, bleiben unbehandelt unbegrenzt:

page.AddRedact({ rect: [216, 548, 460, 566], fill: [0, 0, 0], overlayText: '[REDACTED]' });
page.ApplyRedactions(); // only now is the content actually destroyed

Siehe den Redaction Leitfaden für Mark-vs-Apply-Details und Textsuche-Redaktion.

PageGraphics Zeichenaufrufe erscheinen nie auf der Seite

Page.Graphics() gibt ein PageGraphics zurück, das jeden moveTo()/rect()/circle()/stroke()/fill()-Aufruf puffert, bis apply() sie auf der Seite festschreibt. Eine Sequenz, der ihr apply()-Aufruf fehlt, zeichnet nichts:

const g = page.Graphics();
g.setStrokeColor([0.2, 0.2, 0.2]).setLineWidth(1).rect(80, 300, 200, 100).stroke();
g.apply(); // required — nothing above is visible without this call

Siehe den Images Leitfaden für die vollständige Zeichnung und optional-content-layer API.

Document.ToHtml() und Hand-Tagging hängen beide von einem Strukturbaum ab

Der semantische Modus Document.ToHtml() fließt Inhalte neu, indem er den Strukturbaum durchläuft; bei einem nicht getaggten Dokument fällt er stillschweigend auf einen heuristischen Body zurück und der Export verliert seine Überschriftenstruktur. Derselbe Baum ist das, in das handgefertigtes Tagging (StructTreeRoot.Append() / StructElement.MarkContent()) schreibt und was Document.GetStructTree() zurückgibt — rufe Document.CreateStructTree() oder Document.AutoTag() vor beiden auf:

const root = doc.GetStructTree();
if (!root) throw new Error('document is not tagged yet');

Siehe den Conversion and Structure Leitfäden für die Export- und Tagging-APIs jeweils.

AddTextBlock() schneidet Text geräuschlos an seinem Begrenzungsrechteck ab.

Page.AddTextBlock(text, rect, options) wickelt Text in rect ein und gibt alles zurück, was nicht passte (oder null, wenn alles passte) — es vergrößert das Rechteck nicht und wirft keinen Fehler, wenn Inhalt überläuft. Ein zurückgegebener Wert, der ignoriert wird, bedeutet, dass der überlaufende Text einfach nie gezeichnet wird:

const rest = page.AddTextBlock(longText, [72, 600, 200, 150], { fontSize: 11 });
if (rest) page.AddTextBlock(rest, [300, 600, 200, 150]); // route the overflow somewhere

Siehe den Text Leitfaden für die vollständige text-placement und Extraktion API.

Siehe auch

 Deutsch