Redaction

Redaction

หน้านี้ครอบคลุมการลบเนื้อหาออกจากหน้าของ PDF อย่างถาวร. Aspose.PDF FOSS สำหรับ TypeScript มี workflow การลบข้อมูลสองแบบ: กระบวนการสองขั้นตอน marking แล้ว apply ที่คุณสามารถตรวจสอบก่อนทำการคอมมิท, และกระบวนการหนึ่งขั้นตอนที่ทำทันที. ทั้งสองสามารถใช้ได้บน Page สำหรับหน้าเดียวและบน Document สำหรับเอกสารทั้งหมด.


การทำเครื่องหมายและการประยุกต์การลบข้อมูล

Page.AddRedact() ทำเครื่องหมายพื้นที่สี่เหลี่ยมด้วยคำอธิบาย /Redact — เนื้อหาที่อยู่ด้านล่างยังคงไม่ถูกแก้ไขและยังสามารถคัดลอกได้. ไม่มีอะไรถูกลบจริงจนกว่า Page.ApplyRedactions() จะทำงาน: มันจะเขียนทับสตรีมเนื้อหาอย่างทำลายสำหรับแต่ละเครื่องหมาย /Redact บนหน้า, วาด overlay ของแต่ละเครื่องหมาย (การเติม /IC และ /OverlayText), ลบเครื่องหมายเหล่านั้น, และคืนค่าจำนวนการลบข้อมูลที่ได้ทำ. เครื่องหมายที่เพิ่มหลังจากเรียก ApplyRedactions() จะยังคงอยู่โดยไม่ได้ประยุกต์.

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

const applied = page.ApplyRedactions();
console.log('Redactions applied:', applied);

การลบข้อมูลทันที

Page.Redact() และ Page.RedactText() รวมการทำเครื่องหมายและการประยุกต์ไว้ในคำสั่งเดียว: พวกเขาลบข้อความและรูปภาพที่ถูกปกคลุมอย่างแท้จริง, กำจัดทรัพยากรที่เหลือโดยไม่มีการเชื่อมต่อ, และวาดกล่องเครื่องหมายทึบสีเหนือแต่ละพื้นที่ — โดยไม่มีขั้นตอน ApplyRedactions() แยกจากกันและไม่มีอะไรต้องตรวจสอบก่อน. Page.Redact() รับรายการที่ระบุอย่างชัดเจนของพื้นที่ Rect; Page.RedactText() ค้นหาและลบทุกตำแหน่งของสตริงค้นหาหรือ RegExp, เช่นเดียวกับการค้นหาโดย Page.SearchAnnotationText(). ทั้งสองรับอ็อบเจ็กต์ RedactOptions ที่ควบคุม color ของเครื่องหมาย, ว่าจะ scrubMetadata หรือไม่, และว่าจะ keepAnnotations ที่ทับซ้อนกับพื้นที่ที่ถูกลบ.

เนื่องจากพวกเขาลบเนื้อหาโดยทันทีโดยไม่มีขั้นตอนการตรวจสอบ, ให้เลือกใช้ AddRedact() + ApplyRedactions() เมื่อเครื่องหมายควรตรวจสอบได้ก่อนที่จะคอมมิท, และใช้ Redact() / RedactText() เมื่อพื้นที่หรือคำค้นหาได้รับการยืนยันว่าปลอดภัยต่อการลบแล้ว.


การลบข้อมูลในเอกสารทั้งหมด

เวิร์กโฟลว์สองแบบเดียวกันมีอยู่บน Document โดยกำหนดขอบเขตให้กับทุกหน้าในครั้งเดียว: Document.MarkRedactText() ทำเครื่องหมายทุกการปรากฏของคำค้นหาทั่วทุกหน้า, Document.ApplyRedactions() ใช้ทุกเครื่องหมายในเอกสาร, และ Document.Redact() / Document.RedactText() ทำการลบข้อมูลในพื้นที่ของหน้าเดียวหรือคำค้นหาทั่วเอกสารโดยทันที, สะท้อนกับเทียบเท่า Page ของพวกมัน.


เคล็ดลับและแนวปฏิบัติที่ดีที่สุด

  • ใช้ AddRedact() + ApplyRedactions() เมื่อการลบข้อมูลควรตรวจสอบได้ก่อนที่จะมีผล; ใช้ Redact() / RedactText() เมื่อพื้นที่เหล่านั้นได้รับการยืนยันว่าปลอดภัยและสามารถลบได้ทันที.
  • เพิ่มเครื่องหมาย AddRedact() ทั้งหมดสำหรับหน้าให้เรียบร้อยก่อนเรียกใช้ ApplyRedactions() — เครื่องหมายที่เพิ่มภายหลังจะไม่รวมอยู่ในการเรียกนั้นและจะไม่ถูกใช้.
  • ส่ง scrubMetadata: true ใน RedactOptions / ApplyRedactionsOptions เมื่อเนื้อหาที่ลบอาจปรากฏในเมตาดาต้าเอกสาร (/Info หรือ XMP).
  • RedactText() และ MarkRedactText() ค้นหาด้วยกฎการจับคู่เดียวกับ SearchAnnotationText() / Search, ดังนั้นสตริงการค้นหาที่ไม่ตรงที่นั่นจะไม่สามารถลบข้อมูลได้เช่นกัน.

ปัญหาที่พบบ่อย

ปัญหาสาเหตุวิธีแก้ไข
เครื่องหมายการลบไม่มีผลPage.ApplyRedactions() ไม่เคยถูกเรียกใช้เรียก Page.AddRedact() สำหรับทุกเครื่องหมายก่อน, แล้ว Page.ApplyRedactions() ครั้งเดียว
เนื้อหายังคงกู้คืนได้หลังจากทำเครื่องหมายเครื่องหมายใช้ AddRedact() (mark-only) โดยไม่มีการเรียก ApplyRedactions() ต่อมาเรียก ApplyRedactions() หรือใช้ Redact() / RedactText() เพื่อการลบแบบเรียกครั้งเดียว
ข้อความที่ลบออกปรากฏขึ้นใหม่ในเมตาดาต้าเอกสารที่สกัดออกscrubMetadata ไม่ได้ถูกตั้งค่าส่งค่า { scrubMetadata: true } ในอ็อบเจ็กต์ options
ApplyRedactions() คืนค่า 0ไม่มีเครื่องหมาย /Redact อยู่บนหน้าเมื่อมีการเรียกยืนยันว่า AddRedact() (หรือ MarkRedactText()) ทำงานก่อนและกำหนดเป้าหมายที่หน้าเดียวกัน

FAQ

ความแตกต่างระหว่าง AddRedact กับ Redact คืออะไร?

AddRedact() เพียงทำเครื่องหมายพื้นที่ — เนื้อหายังคงอยู่และสามารถคัดลอกได้จนกว่า ApplyRedactions() จะทำงาน Redact() จะลบเนื้อหาในคำสั่งเดียวกันโดยไม่มีขั้นตอนการใช้แยกต่างหาก.

ฉันสามารถทำการลบข้อมูลโดยการค้นหาข้อความแทนการระบุตำแหน่งได้หรือไม่?

ใช่ RedactText() ค้นหาและลบข้อมูลทุกตำแหน่งที่พบของสตริงค้นหา หรือ RegExp ทันที; MarkRedactText() ทำเช่นเดียวกันแต่เพียงทำเครื่องหมายการจับคู่ไว้ เท่าที่จะใช้ในภายหลังด้วยคำสั่ง ApplyRedactions().

การลบข้อมูลทำงานทั่วทั้งเอกสารหรือเฉพาะหนึ่งหน้าในแต่ละครั้ง?

ทั้งสองอย่าง Page.Redact() / Page.ApplyRedactions() และพี่น้องของมันทำงานบนหนึ่งหน้า; Document.Redact() / Document.ApplyRedactions() และพี่น้องของมันทำงานทั่วทุกหน้า.

คำอธิบายที่อยู่ใกล้พื้นที่ที่ลบข้อมูลจะถูกลบด้วยหรือไม่?

เฉพาะเมื่อคุณปล่อยให้พวกมันเป็นเช่นนั้น ส่ง keepAnnotations: true ในอ็อบเจกต์ options เพื่อรักษา annotation ที่ทับกับส่วนที่ถูกทำให้เป็นลบ แทนที่จะลบออกพร้อมกับมัน.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
Page.AddRedact()ทำเครื่องหมายพื้นที่สี่เหลี่ยมด้วยคำอธิบาย /Redact โดยยังไม่ได้ลบเนื้อหา
Page.ApplyRedactions()ลบทุกพื้นที่ที่ทำเครื่องหมายบนหน้าอย่างถาวรและคืนค่าจำนวนที่ได้ทำการลบ
Page.Redact()ลบเนื้อหาในพื้นที่ที่กำหนดโดยทันทีโดยไม่มีขั้นตอนการใช้แยก
Page.RedactText()ค้นหาและทำการลบข้อมูลทันทีทุกกรณีที่พบสตริงการค้นหาหรือ RegExp
Page.MarkRedactText()ค้นหาและทำเครื่องหมาย (โดยไม่ทำการประยุกต์) ทุกการปรากฏของสตริงการค้นหาหรือ RegExp
Document.ApplyRedactions()ประยุกต์เครื่องหมาย /Redact ทุกอันทั่วทั้งเอกสาร
Document.Redact() / Document.RedactText()ทำการบังข้อมูลส่วนที่ต้องการโดยทันทีในหน้าเดียว หรือคำค้นหาทั่วทุกหน้า
Document.MarkRedactText()ทำเครื่องหมายทุกการปรากฏของคำค้นหาทั่วทุกหน้า

ดูเพิ่มเติม

 ภาษาไทย