วิธีลบข้อมูล PDF ใน TypeScript

วิธีลบข้อมูล 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() มีลักษณะทำลาย. ควรเก็บไฟล์ต้นฉบับไว้หากต้องการกู้คืนเนื้อหาที่ไม่ได้ลบในภายหลัง.

ดูเพิ่มเติม

 ภาษาไทย