Troubleshooting

Ta strona zbiera poprawki najczęściej napotykanych problemów w całym Aspose.PDF FOSS dla TypeScript’s podpisywania, adnotacji, redakcji, rysowania, konwersji i tekstowych API.

Metody asynchroniczne (Sign, Certify, VerifySignatures) wydają się nic nie robić

Document.Sign(), Document.Certify() i Document.VerifySignatures() wszystkie zwracają Promise. Wywołanie jednej bez await pozwala natychmiast kontynuować wykonanie — kolejny doc.WriteTo() lub doc.Save() może zostać uruchomiony, zanim podpis zostanie faktycznie zapisany, a kolejny console.log() na wyniku weryfikacji zapisuje nierozwiązany Promise zamiast tablicy 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');

Zobacz Security przewodnik dotyczący pełnego przepływu certify-then-sign.

SearchAnnotationText() i SearchAnnotations() zwracają różne wyniki dla tego samego tekstu

Te dwie metody wyszukiwania są rozłączne w obu kierunkach na tej samej stronie. SearchAnnotationText() dopasowuje dosłowne metadane adnotacji (/Contents, /T, /Subj); SearchAnnotations() dopasowuje rendered tekst rysowany przez własny wygląd adnotacji znacznikowej (na przykład a FreeText ciało). Wartość przechowywana wyłącznie w /Contents jest znajdowana przez jedną i pomijana przez drugą:

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

Żadna z metod nie przeszukuje zwykłego tekstu strony — użyj Page.GetText() or Page.Search() do tego. Zobacz Adnotacje przewodnik dla pełnej adnotacji API.

Sam znacznik redakcji nie usuwa treści

Page.AddRedact() tylko rysuje RedactAnnotation nad obszarem — zawartość pod spodem pozostaje nietknięta i nadal można ją kopiować, aż do Page.ApplyRedactions() uruchomienia i destrukcyjnego przepisania strumienia zawartości. Dodane znaczniki after ApplyRedactions() już zostały uruchomione i pozostają nie zastosowane bezterminowo:

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

Zobacz Redaction przewodnik dotyczący szczegółów mark-vs-apply oraz redakcji wyszukiwania tekstu.

PageGraphics wywołania rysowania nigdy nie pojawiają się na stronie

Page.Graphics() zwraca PageGraphics, który buforuje każde wywołanie moveTo()/rect()/circle()/stroke()/fill() aż apply() zatwierdzi je na stronie. Sekwencja pomijająca wywołanie apply() nie rysuje nic:

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

Zobacz Images przewodnik dotyczący pełnego rysunku i optional-content-layer API.

Document.ToHtml() oraz ręczne tagowanie oba zależą od drzewa strukturalnego

Tryb semantyczny Document.ToHtml() przetwarza treść, przechodząc po drzewie struktury; w nieotagowanym dokumencie cicho przełącza się na heurystyczne ciało i eksport traci strukturę nagłówków. To samo drzewo jest tym, do którego ręczne tagowanie (StructTreeRoot.Append() / StructElement.MarkContent()) zapisuje oraz co zwraca Document.GetStructTree() — wywołaj Document.CreateStructTree() lub Document.AutoTag() przed którymkolwiek z nich:

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

Zobacz Conversion and Structure przewodniki dotyczące odpowiednio export i tagging APIs.

AddTextBlock() cicho przycina tekst w jego prostokącie ograniczającym

Page.AddTextBlock(text, rect, options) owija tekst wewnątrz rect i zwraca to, co nie mieści się (lub null, jeśli wszystko się mieści) — nie powiększa prostokąta ani nie generuje błędu, gdy zawartość przelewa się. Zwrócona wartość, którą się ignoruje, oznacza, że przelewający tekst po prostu nie zostaje narysowany:

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

Zobacz Text przewodnik dotyczący pełnego text-placement i extraction API.

Zobacz także

 Polski