วิธีลบข้อมูล PDF ใน TypeScript
คำแนะนำนี้แสดงวิธีลบข้อมูล PDF ด้วย Aspose.PDF FOSS สำหรับ TypeScript. Page.AddRedact() ทำเครื่องหมายพื้นที่; Page.ApplyRedactions() จะเขียนทับสตรีมเนื้อหาอย่างทำลายเพื่อให้ตัวอักษรที่อยู่ใต้แต่ละพื้นที่ที่ทำเครื่องหมายหายไป. เครื่องหมายที่ไม่ได้ใช้จะคงเป็นหมายเหตุธรรมดาที่สามารถคัดลอกและเลือกได้. จำเป็นต้องใช้ Node.js 22 หรือรุ่นใหม่กว่า.
คู่มือแบบขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ
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ตรวจสอบการติดตั้งโดยการนำเข้า class Document ในไฟล์ TypeScript ใหม่ — บรรทัดนี้ควรไม่มีข้อผิดพลาดเมื่อแพ็กเกจถูกติดตั้งเรียบร้อยแล้ว:
import { Document } from '@asposefoss/pdf';ขั้นตอนที่ 2: นำเข้าคลาสที่จำเป็น
นำเข้า Document เพื่อเปิดไฟล์; AddRedact() และ ApplyRedactions() จะถูกเรียกโดยตรงบนอินสแตนซ์ของ Page ที่มันคืนค่า:
import { Document } from '@asposefoss/pdf';ขั้นตอนที่ 3: ทำเครื่องหมายบริเวณเพื่อการลบข้อมูล
Page.AddRedact(opts) วาด RedactAnnotation บน rect. fill ตั้งค่าสีที่ทาบบนบริเวณเมื่อถูกนำไปใช้, และ overlayText (พร้อมกับ align, fontSize, textColor) พิมพ์ป้ายแทนที่เช่น [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],
});ขั้นตอนที่ 4: ใช้การลบข้อมูล
Page.ApplyRedactions() เขียนทับสตรีมเนื้อหาอย่างทำลาย — รูปอักษรภายในทุก RedactAnnotation ที่ทำเครื่องหมายบนหน้า จะหายไปอย่างถาวร, และเครื่องหมายที่ได้ใช้จะถูกลบออก. เครื่องหมายที่เพิ่มหลังจากการเรียกนี้จะยังไม่ถูกนำไปใช้: ค่าที่อยู่ใต้เครื่องหมายยังคงอ่านได้และยังคงสามารถคัดลอกได้:
page.ApplyRedactions();
doc.WriteTo('memo-redacted.pdf');ปัญหาทั่วไปและวิธีแก้
redaction mark แสดงกล่องสีดำ แต่ข้อความที่อยู่ด้านล่างยังคงสามารถคัดลอกได้. Page.ApplyRedactions() ไม่เคยถูกเรียกใช้ (หรือถูกเรียกก่อนที่เครื่องหมายจะถูกเพิ่ม). การทำเครื่องหมายด้วย AddRedact() เพียงอย่างเดียวจะวาด annotation เหนือพื้นที่ — เนื้อหาที่อยู่ใต้จะถูกทำลายเพียงครั้งเดียว ApplyRedactions() ทำงาน.
ApplyRedactions() เนื้อหาที่ถูกลบจากเครื่องหมาย rect ไม่ได้ครอบคลุม. rect คือพื้นที่ที่เขียนทับอย่างแม่นยำ — ข้อความหรือภาพที่ทับกันเพียงบางส่วนยังคงสามารถถูกทำลายบางส่วนที่ขอบเขตได้. Size marks อย่างกว้างขวางรอบเนื้อหาเป้าหมาย.
ผลการค้นหาไม่สามารถส่งต่อโดยตรงไปยัง Page.AddRedact(). ผลลัพธ์จาก Page.SearchAnnotationText() มีเมตาดาต้าคำอธิบาย, ไม่ใช่เรขาคณิตของหน้า — ไม่ใช่รูปทรงเดียวกับ rect an AddRedact() ที่เครื่องหมายคาดหวัง. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) เป็นจุดเข้าเพื่อการลบข้อมูลโดยการค้นหาข้อความ, และทั้งสองยังสามารถใช้ได้ที่ Document ระดับเพื่อสแกนทุกหน้าในหนึ่งคำสั่ง.
การลบข้อมูลยังคงอยู่หลังการเข้ารหัสโดยไม่คาดคิด. การลบข้อมูลและการเข้ารหัสเป็นการดำเนินการที่อิสระ — ให้ทำการลบข้อมูลก่อนบันทึกด้วย encrypt ตัวเลือกหากเป้าหมายคือการลบเนื้อหาและจำกัดการเข้าถึงสิ่งที่เหลือ; การทำในลำดับตรงข้ามจะไม่ย้อนกลับการบันทึกที่เข้ารหัสแล้ว.
คำถามที่พบบ่อย
ความแตกต่างระหว่างการทำเครื่องหมายและการใช้การลบข้อมูลคืออะไร?
AddRedact() เพียงสร้าง annotation ที่บรรยายตำแหน่งที่วางแผนการลบ — เนื้อหาที่ถูกครอบไม่ถูกแก้ไขและยังสามารถเลือก/คัดลอกได้จนกว่า ApplyRedactions() จะทำงานและเขียนทับหน้าด้วยการทำลาย.
ฉันสามารถลบข้อมูลโดยการค้นหาข้อความแทนการระบุสี่เหลี่ยมได้หรือไม่?
ใช่ — Page.MarkRedactText(find, opts) ทำเครื่องหมายทุกผลลัพธ์ของ find เพื่อใช้ภายหลัง, และ Page.RedactText(find, opts) ทำเครื่องหมายและใช้ในหนึ่งคำสั่ง ทั้งสองยังมีอยู่บน Document เพื่อสแกนเอกสารทั้งหมด.
การทำ ApplyRedactions() มีผลต่อคำอธิบายอื่นนอกจากเครื่องหมายการลบหรือไม่?
ไม่ — มันเขียนทับสตรีมเนื้อหาที่อยู่ใต้เครื่องหมาย RedactAnnotation ของมันเอง; ประเภทคำอธิบายอื่น ๆ บนหน้าจะไม่ได้รับผลกระทบจากการเรียกนี้.
การทำ redaction สามารถย้อนกลับได้หรือไม่?
ไม่ — ApplyRedactions() มีลักษณะทำลาย. ควรเก็บไฟล์ต้นฉบับไว้หากต้องการกู้คืนเนื้อหาที่ไม่ได้ลบในภายหลัง.