Troubleshooting

Ця сторінка збирає виправлення найпоширеніших проблем, що виникають у Aspose.PDF FOSS для підпису, анотації, редагування, малювання, конвертації та текстових API TypeScript.

Асинхронні методи (Sign, Certify, VerifySignatures) здаються безрезультатними

Document.Sign(), Document.Certify() та Document.VerifySignatures() всі повертають Promise. Виклик одного без await дозволяє виконанню продовжитися одразу — наступний doc.WriteTo() або doc.Save() може виконатися до того, як підпис фактично буде записаний, а наступний console.log() на результаті верифікації реєструє невирішений Promise замість масиву 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');

Дивіться Security посібник для повного процесу certify-then-sign.

SearchAnnotationText() і SearchAnnotations() повертають різні результати для одного і того ж тексту

Ці два методи пошуку є взаємовиключними в обох напрямках на одній сторінці. SearchAnnotationText() відповідає буквальним метаданим анотації (/Contents, /T, /Subj); SearchAnnotations() відповідає rendered тексту, намальованого власним виглядом розміткової анотації (наприклад a FreeText тілі). Значення, збережене лише в /Contents знаходиться одним, а іншим пропускається:

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

Жоден із методів не шукає звичайний текст сторінки — використовуйте Page.GetText() or Page.Search() для цього. Дивіться Анотації посібник для повної анотації API.

Сам по собі маркер редагування не видаляє вміст

Page.AddRedact() лише малює RedactAnnotation по області — вміст під нею залишаєється недоторканим і досі можна копіювати, доки Page.ApplyRedactions() запускається і руйнівно переписує потік вмісту. Додані позначки after ApplyRedactions() вже запущений, залишатиметься незастосованим назавжди:

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

Дивіться Redaction посібник щодо деталей mark-vs-apply та редагування пошуку тексту.

PageGraphics виклики малювання ніколи не з’являються на сторінці

Page.Graphics() повертає PageGraphics, який буферизує кожний виклик moveTo()/rect()/circle()/stroke()/fill(), доки apply() не зафіксує їх на сторінці. Послідовність, якій бракує виклику apply(), нічого не малює:

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

Дивіться Images посібник щодо повного малюнка та optional-content-layer API.

Document.ToHtml() і ручне тегування обидва залежать від структури дерева

Семантичний режим Document.ToHtml() переоформлює вміст, проходячи по структурному дереву; у нетегованому документі він безшумно переходить до евристичного тіла, і експорт втрачає структуру заголовків. Те саме дерево — це те, у яке записує ручне тегування (StructTreeRoot.Append() / StructElement.MarkContent()) і що повертає Document.GetStructTree() — викличте Document.CreateStructTree() або Document.AutoTag() перед будь-яким із них:

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

Дивіться Conversion and Structure посібники щодо експорту та API тегування відповідно.

AddTextBlock() безшумно обрізає текст у його обмежувальному прямокутнику.

Page.AddTextBlock(text, rect, options) обгортає текст всередині rect і повертає все, що не вмістилося (або null, якщо все вмістилося) — він не збільшує прямокутник і не генерує помилку при переповненні вмісту. Повернене значення, яке ігнорується, означає, що переповнений текст просто ніколи не малюється:

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

Дивіться Text посібник щодо повного розташування тексту та видобутку API.

Дивіться також

 Українська