Troubleshooting

Troubleshooting

Tato stránka shromažďuje opravy nejčastějších problémů, se kterými se setkáváte v rámci Aspose.PDF FOSS pro TypeScript API pro podepisování, anotaci, redakci, kreslení, konverzi a text.

Asynchronní metody (Sign, Certify, VerifySignatures) se zdají nedělat nic

Document.Sign(), Document.Certify() a Document.VerifySignatures() všechny vracejí Promise. Volání jednoho bez await umožní okamžité pokračování provádění — následující doc.WriteTo() nebo doc.Save() může běžet dříve, než je podpis skutečně zapsán, a následující console.log() na výsledek ověření zaznamená nevyřešený Promise místo pole SignatureReport[]:

// 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');

Viz Security průvodce pro celý proces certifikace a následného podepsání.

SearchAnnotationText() a SearchAnnotations() vracejí různé výsledky pro stejný text

Tyto dvě metody vyhledávání jsou na stejné stránce vzájemně disjunktní v obou směrech. SearchAnnotationText() odpovídá doslovným metadatům anotace (/Contents, /T, /Subj); SearchAnnotations() odpovídá rendered textu vykreslenému vlastním vzhledem markup anotace (například a FreeText těle). Hodnota uložená pouze v /Contents je nalezena jedním a opomenuta druhým:

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

Žádná z metod neprohledává běžný text stránky — použijte Page.GetText() or Page.Search() k tomu. Viz Poznámky průvodce pro úplnou anotaci API.

Samotná značka pro redakci neodstraňuje obsah

Page.AddRedact() pouze vykreslí RedactAnnotation nad oblastí — obsah pod ní zůstává nedotčený a stále lze kopírovat, dokud Page.ApplyRedactions() spustí a destruktivně přepíše obsahový tok. Přidané značky after ApplyRedactions() již byl spuštěn, zůstává neaplikován neomezeně:

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

Viz Redaction průvodce podrobnostmi o rozdílu mezi značkou a aplikací a o redakci textového vyhledávání.

Volání kreslení PageGraphics se nikdy neobjeví na stránce

Page.Graphics() vrací PageGraphics, který ukládá do bufferu každé volání moveTo()/rect()/circle()/stroke()/fill(), dokud apply() neuloží je na stránku. Sekvence postrádající volání apply() nic nevykreslí:

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

Viz Images průvodce pro kompletní výkres a volitelnou vrstvu obsahu API.

Document.ToHtml() a Hand-Tagging oba závisí na strukturovém stromu

Semantický režim Document.ToHtml() přetéká obsah procházením strukturovaného stromu; u neoznačeného dokumentu tiše přejde na heuristické tělo a export ztratí strukturu nadpisů. Stejný strom je tím, do kterého zapisuje ručně vytvořené značkování (StructTreeRoot.Append() / StructElement.MarkContent()) a co Document.GetStructTree() vrací — zavolejte Document.CreateStructTree() nebo Document.AutoTag() před tím, než kterýkoliv z nich:

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

Viz Conversion and Structure průvodce pro exportní a značkovací API respektive.

AddTextBlock() tiše ořízne text na jeho ohraničujícím obdélníku.

Page.AddTextBlock(text, rect, options) zabalí text uvnitř rect a vrátí vše, co se nevešlo (nebo null, pokud se vše vešlo) — nezvětšuje obdélník ani nevyvolá chybu, když obsah přeteče. Návratová hodnota, která je ignorována, znamená, že přetečený text je prostě nikdy nevykreslen:

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

Viz Text průvodce pro úplné umístění textu a extrakci API.

Viz také:

 Čeština