Troubleshooting
Halaman ini mengumpulkan perbaikan untuk masalah paling umum yang ditemui di seluruh Aspose.PDF FOSS untuk API penandatanganan, anotasi, redaksi, gambar, konversi, dan teks TypeScript.
Metode Asinkron (Sign, Certify, VerifySignatures) Tampaknya Tidak Melakukan Apa-apa
Document.Sign(), Document.Certify(), dan Document.VerifySignatures() semuanya mengembalikan Promise. Memanggil salah satu tanpa await memungkinkan eksekusi berlanjut segera — doc.WriteTo() atau doc.Save() berikutnya dapat dijalankan sebelum tanda tangan benar-benarnya ditulis, dan console.log() berikutnya pada hasil verifikasi mencatat Promise yang belum terselesaikan alih-alih array 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');Lihat Security panduan untuk alur sertifikasi-lalu-tanda tangan lengkap.
SearchAnnotationText() dan SearchAnnotations() Mengembalikan Hasil yang Berbeda untuk Teks yang Sama
Kedua metode pencarian ini tidak tumpang tindih dalam kedua arah pada halaman yang sama. SearchAnnotationText() mencocokkan metadata anotasi literal (/Contents, /T, /Subj); SearchAnnotations() mencocokkan rendered teks yang digambar oleh tampilan sendiri dari anotasi markup (misalnya sebuah FreeText badan). Nilai yang disimpan hanya di /Contents ditemukan oleh satu dan terlewat oleh yang lain:
const metadataHits = page.SearchAnnotationText('confidential'); // matches /Contents, /T, /Subj
const renderedHits = page.SearchAnnotations('confidential'); // matches rendered markup text
Tidak ada metode yang mencari teks halaman biasa — gunakan Page.GetText() or Page.Search() untuk itu. Lihat Anotasi panduan untuk anotasi lengkap API.
Tanda Redaksi Sendiri Tidak Menghapus Konten
Page.AddRedact() hanya menggambar RedactAnnotation di atas suatu wilayah — konten di bawahnya tidak tersentuh dan masih dapat disalin hingga Page.ApplyRedactions() berjalan dan menimpa aliran konten secara destruktif. Tanda yang ditambahkan after ApplyRedactions() yang sudah dijalankan tetap tidak diterapkan secara tak terbatas:
page.AddRedact({ rect: [216, 548, 460, 566], fill: [0, 0, 0], overlayText: '[REDACTED]' });
page.ApplyRedactions(); // only now is the content actually destroyed
Lihat Redaction panduan untuk detail mark-vs-apply dan redaksi text-search.
Pemanggilan Gambar PageGraphics Tidak Pernah Muncul di Halaman
Page.Graphics() mengembalikan PageGraphics yang menampung setiap pemanggilan moveTo()/rect()/circle()/stroke()/fill() sampai apply() mengkomitnya ke halaman. Urutan yang tidak memiliki pemanggilan apply() tidak menggambar apa pun:
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
Lihat Images panduan untuk gambar lengkap dan lapisan konten opsional API.
Document.ToHtml() dan Penandaan Manual Keduanya Bergantung pada Pohon Struktur
Mode semantik Document.ToHtml() mengalir ulang konten dengan menelusuri pohon struktur; pada dokumen yang tidak ditandai ia diam-diam kembali ke tubuh heuristik dan ekspor kehilangan struktur judulnya. Pohon yang sama adalah yang ditulisi oleh penandaan buatan tangan (StructTreeRoot.Append() / StructElement.MarkContent()) dan yang dikembalikan oleh Document.GetStructTree() — panggil Document.CreateStructTree() atau Document.AutoTag() sebelum keduanya:
const root = doc.GetStructTree();
if (!root) throw new Error('document is not tagged yet');Lihat Conversion and Structure panduan untuk API ekspor dan penandaan masing-masing.
AddTextBlock() Memotong Teks Secara Senyap pada Persegi Pembatasnya
Page.AddTextBlock(text, rect, options) membungkus teks di dalam rect dan mengembalikan apa pun yang tidak muat (atau null jika semuanya muat) — ia tidak memperbesar persegi atau melempar kesalahan ketika konten meluap. Nilai kembali yang diabaikan berarti teks yang meluap hanya tidak pernah digambar:
const rest = page.AddTextBlock(longText, [72, 600, 200, 150], { fontSize: 11 });
if (rest) page.AddTextBlock(rest, [300, 600, 200, 150]); // route the overflow somewhere
Lihat Text panduan untuk penempatan teks lengkap dan ekstraksi API.