Cara Menyensor Konten PDF dalam TypeScript

Cara Menyensor Konten PDF dalam TypeScript

Panduan ini menunjukkan cara menyensor konten PDF dengan Aspose.PDF FOSS untuk TypeScript. Page.AddRedact() menandai sebuah wilayah; Page.ApplyRedactions() menulis ulang aliran konten secara destruktif sehingga glif di bawah setiap wilayah yang ditandai hilang. Tanda yang tidak diterapkan tetap sebagai anotasi biasa yang dapat disalin. Diperlukan Node.js 22 atau yang lebih baru.

Panduan Langkah demi Langkah

Langkah 1: Instal Paket

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build

Verifikasi instalasi dengan mengimpor kelas Document dalam file TypeScript baru — baris ini harus teratasi tanpa error setelah paket diinstal:

import { Document } from '@asposefoss/pdf';

Langkah 2: Impor Kelas yang Diperlukan

Impor Document untuk membuka file; AddRedact() dan ApplyRedactions() dipanggil langsung pada instance Page yang dikembalikannya:

import { Document } from '@asposefoss/pdf';

Langkah 3: Tandai Wilayah untuk Redaksi

Page.AddRedact(opts) menggambar RedactAnnotation di atas rect. fill mengatur warna yang dilukis di atas wilayah setelah diterapkan, dan overlayText (dengan align, fontSize, textColor) mencetak label pengganti seperti [REDACTED]:

const doc = Document.OpenFile('memo.pdf');
const page = doc.Pages[0];

page.AddRedact({
  rect: [216, 548, 460, 566],
  fill: [0, 0, 0],
  overlayText: '[REDACTED]',
  align: 'center',
  fontSize: 9,
  textColor: [1, 1, 1],
});

Langkah 4: Terapkan Redaksi

Page.ApplyRedactions() menulis ulang aliran konten secara destruktif — glyph di dalam setiap RedactAnnotation yang ditandai pada halaman hilang selamanya, dan tanda yang diterapkan dihapus. Tanda yang ditambahkan setelah pemanggilan ini tetap tidak diterapkan: nilai di bawahnya masih dapat dibaca dan masih dapat disalin:

page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');

Masalah Umum dan Solusinya

Tanda redaksi menampilkan kotak hitam tetapi teks di bawahnya masih dapat disalin. Page.ApplyRedactions() tidak pernah dipanggil (atau dipanggil sebelum tanda ditambahkan). Menandai dengan AddRedact() sendirian hanya menggambar anotasi di atas wilayah — konten di bawahnya dihancurkan hanya sekali ApplyRedactions() dijalankan.

ApplyRedactions() konten yang dihapus oleh tanda rect tidak mencakup. rect adalah wilayah yang tepat ditulis ulang — teks atau gambar yang hanya sebagian tumpang tindih dapat masih dihancurkan sebagian di batasnya. Tandai ukuran secara luas di sekitar konten target.

Hasil pencarian tidak dapat diteruskan langsung ke Page.AddRedact(). Sebuah temuan dari Page.SearchAnnotationText() membawa metadata anotasi, bukan geometri halaman — itu bukan bentuk yang sama dengan rect an AddRedact() yang diharapkan oleh mark. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) adalah titik masuk redact-by-text-search, dan keduanya juga tersedia pada Document level untuk menyapu setiap halaman dalam satu panggilan.

Sebuah redaction tetap bertahan setelah enkripsi secara tak terduga. Redaction dan enkripsi adalah operasi yang independen — terapkan redactions sebelum menyimpan dengan encrypt opsi jika tujuannya adalah untuk menghapus konten sekaligus membatasi akses ke apa yang tersisa; menerapkan dalam urutan sebaliknya tidak akan membatalkan penyimpanan yang sudah dienkripsi.

Pertanyaan yang Sering Diajukan

Apa perbedaan antara menandai dan menerapkan redaksi?

AddRedact() hanya membuat anotasi yang menjelaskan di mana redaksi direncanakan — konten yang ditutupi tidak tersentuh dan masih dapat dipilih/disalin hingga ApplyRedactions() dijalankan dan menimpa halaman secara destruktif.

Apakah saya dapat melakukan redaksi dengan mencari teks alih-alih menentukan persegi panjang?

Ya — Page.MarkRedactText(find, opts) menandai setiap kecocokan find untuk diterapkan nanti, dan Page.RedactText(find, opts) menandai serta menerapkan dalam satu panggilan. Kedua fungsi tersebut juga ada pada Document untuk menyapu seluruh dokumen.

Apakah ApplyRedactions() memengaruhi anotasi selain tanda redaksi?

Tidak — itu menulis ulang aliran konten di bawah tanda RedactAnnotation miliknya; jenis anotasi lain pada halaman tidak tersentuh oleh panggilan ini.

Apakah redaksi dapat dibalik?

Tidak — ApplyRedactions() bersifat destruktif. Simpan file asli jika konten yang belum direduksi perlu dipulihkan nanti.

Lihat Juga

 Bahasa Indonesia