Troubleshooting

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.

Lihat Juga

 Bahasa Indonesia