Troubleshooting
Ez az oldal a Aspose.PDF FOSS leggyakoribb problémáihoz kapcsolódó javításokat gyűjti össze a TypeScript aláírási, annotációs, redakciós, rajzolási, konverziós és szöveges API-jaihoz.
Az aszinkron módszerek (Sign, Certify, VerifySignatures) látszólag semmit sem csinálnak
Document.Sign(), Document.Certify() és Document.VerifySignatures() mind egy Promise-t ad vissza. Egyik meghívása await nélkül azonnal folytatja a végrehajtást — egy következő doc.WriteTo() vagy doc.Save() lefuthat, mielőtt az aláírás ténylegesen megírásra kerülne, és egy következő console.log() a verification eredményen egy feloldatlan Promise-t naplóz a SignatureReport[] tömb helyett:
// 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');Lásd a Security útmutató a teljes certify-then-sign folyamathoz.
SearchAnnotationText() és SearchAnnotations() különböző eredményeket adnak ugyanarra a szövegre
Ez a két keresési módszer diszjunkt mindkét irányban ugyanazon az oldalon. SearchAnnotationText() illeszkedik a szó szerinti annotáció metaadatokhoz (/Contents, /T, /Subj); SearchAnnotations() illeszkedik a rendered a jelölő annotáció saját megjelenése által rajzolt szöveg (például egy FreeText test). Egy érték, amely csak ebben tárolódik /Contents az egyik megtalálja, a másik pedig elmulasztja:
const metadataHits = page.SearchAnnotationText('confidential'); // matches /Contents, /T, /Subj
const renderedHits = page.SearchAnnotations('confidential'); // matches rendered markup text
Egyik módszer sem keres az általános oldal szövegben — használja Page.GetText() or Page.Search() ehhez. Lásd a Megjegyzések útmutató a teljes annotációhoz API.
A Redaction Mark önmagában nem távolítja el a tartalmat
Page.AddRedact() csak egyet rajzol RedactAnnotation egy területen — az alatti tartalom érintetlen és továbbra is másolható és kiválasztható, amíg Page.ApplyRedactions() fut és destruktívan felülírja a tartalomfolyamot. Hozzáadott jelölések after ApplyRedactions() már lefutott, és határozatlanul alkalmazatlan marad:
page.AddRedact({ rect: [216, 548, 460, 566], fill: [0, 0, 0], overlayText: '[REDACTED]' });
page.ApplyRedactions(); // only now is the content actually destroyed
Lásd a Redaction útmutató a mark-vs-apply részleteiről és a szövegkeresés redakciójáról.
PageGraphics rajzolási hívások soha nem jelennek meg az oldalon
Page.Graphics() egy PageGraphics-t ad vissza, amely minden moveTo()/rect()/circle()/stroke()/fill() hívást puffereli, amíg a apply() el nem köti őket az oldalra. Egy apply() hívást hiányzó sorozat semmit sem rajzol:
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
Lásd a Images útmutató a teljes rajzról és az opcionális tartalomréteg API.
Document.ToHtml() és a kézi címkézés egyaránt egy struktúrafától függ
A szemantikus módú Document.ToHtml() a tartalmat a struktúrafa bejárásával újra formázza; egy címkézetlen dokumentum esetén csendben egy heurisztikus törzshöz tér vissza, és az export elveszíti a címsorstruktúrát. Ugyanez a fa az, amibe a kézzel írt címkézés (StructTreeRoot.Append() / StructElement.MarkContent()) beír, és amit a Document.GetStructTree() visszaad — hívd a Document.CreateStructTree() vagy a Document.AutoTag() függvényt, mielőtt bármelyik is történik.
const root = doc.GetStructTree();
if (!root) throw new Error('document is not tagged yet');Lásd a Conversion and Structure útmutatók az export és a címkézési API-khoz rendre.
AddTextBlock() Csendesen levágja a szöveget a határoló téglalapján.
Page.AddTextBlock(text, rect, options) a szöveget rect belsejébe csomagolja, és visszaadja, ami nem fér bele (vagy null, ha minden belefér) — nem növeli a téglalapot, és nem dob hibát, ha a tartalom túllép. Ha a visszatérési értéket figyelmen kívül hagyják, az azt jelenti, hogy a túlcsorduló szöveg egyszerűen nem kerül kirajzolásra:
const rest = page.AddTextBlock(longText, [72, 600, 200, 150], { fontSize: 11 });
if (rest) page.AddTextBlock(rest, [300, 600, 200, 150]); // route the overflow somewhere
Lásd a Text útmutató a teljes szöveg-pozicionálásról és kinyerésről API.