Cách Che Mờ Nội Dung PDF trong TypeScript

Cách Che Mờ Nội Dung PDF trong TypeScript

Hướng dẫn này chỉ cách che dấu nội dung PDF bằng Aspose.PDF FOSS cho TypeScript. Page.AddRedact() đánh dấu một vùng; Page.ApplyRedactions() ghi đè dữ liệu luồng nội dung một cách phá hủy nên các glyph dưới mỗi vùng đã đánh dấu sẽ bị xóa. Các đánh dấu chưa được áp dụng sẽ giữ lại như các chú thích thông thường, có thể sao chép và chọn. Yêu cầu Node.js 22 hoặc mới hơn.

Hướng dẫn từng bước

Bước 1: Cài đặt gói

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

Xác minh việc cài đặt bằng cách nhập lớp Document vào một tệp TypeScript mới — dòng này sẽ không gây lỗi khi gói đã được cài đặt:

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

Bước 2: Nhập các lớp cần thiết

Nhập Document để mở tệp; AddRedact() và ApplyRedactions() được gọi trực tiếp trên các thể hiện Page mà nó trả về:

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

Bước 3: Đánh dấu một vùng để kiểm duyệt

Page.AddRedact(opts) vẽ một RedactAnnotation lên rect. fill đặt màu được sơn lên vùng sau khi áp dụng, và overlayText (với align, fontSize, textColor) in nhãn thay thế như [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],
});

Bước 4: Áp dụng kiểm duyệt

Page.ApplyRedactions() ghi đè một cách phá hủy lên luồng nội dung — các glyph trong mọi RedactAnnotation được đánh dấu trên trang sẽ biến mất mãi mãi, và các dấu đã áp dụng sẽ bị xóa. Các dấu được thêm sau cuộc gọi này vẫn không được áp dụng: giá trị dưới chúng vẫn có thể đọc và vẫn có thể sao chép.

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

Các vấn đề thường gặp và cách khắc phục

Một dấu xóa bỏ hiển thị hộp đen nhưng văn bản nền vẫn có thể được sao chép. Page.ApplyRedactions() không bao giờ được gọi (hoặc đã được gọi trước khi dấu được thêm). Đánh dấu bằng AddRedact() một mình chỉ vẽ một chú thích lên vùng — nội dung bên dưới chỉ bị phá hủy một lần ApplyRedactions() chạy.

ApplyRedactions() đã xóa nội dung mà dấu rect không bao phủ. rect là vùng chính xác được viết lại — văn bản hoặc hình ảnh chỉ chồng lên một phần có thể vẫn bị phá hủy một phần ở ranh giới. Đánh dấu kích thước một cách hào phóng xung quanh nội dung mục tiêu.

Kết quả tìm kiếm không thể được truyền thẳng tới Page.AddRedact(). Một kết quả từ Page.SearchAnnotationText() chứa siêu dữ liệu chú thích, không phải hình học trang — nó không có cùng hình dạng với rect an AddRedact() đánh dấu mong đợi. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) là các điểm vào để xóa bằng tìm kiếm văn bản, và cả hai cũng có sẵn ở Document cấp độ để quét mọi trang trong một lần gọi.

Một việc xóa nội dung vẫn tồn tại sau khi mã hoá một cách bất ngờ. Xóa nội dung và mã hoá là các thao tác độc lập — áp dụng việc xóa trước khi lưu với encrypt các tùy chọn nếu mục tiêu là cả xóa nội dung và hạn chế quyền truy cập vào những gì còn lại; thực hiện theo thứ tự ngược lại sẽ không hoàn tác một lần lưu đã được mã hoá.

Câu hỏi thường gặp

Sự khác biệt giữa việc đánh dấu và thực hiện xóa nội dung là gì?

AddRedact() chỉ tạo một chú thích mô tả vị trí dự kiến của việc xóa nội dung — nội dung được bao phủ không bị chạm tới và vẫn có thể chọn/ sao chép cho đến khi ApplyRedactions() chạy và ghi lại trang một cách phá hủy.

Tôi có thể xóa nội dung bằng cách tìm kiếm văn bản thay vì chỉ định một hình chữ nhật không?

Có — Page.MarkRedactText(find, opts) đánh dấu mọi kết quả khớp của find để áp dụng sau, và Page.RedactText(find, opts) đánh dấu và thực hiện trong một lần gọi. Cả hai cũng tồn tại trên Document để quét toàn bộ tài liệu.

Liệu ApplyRedactions() có ảnh hưởng đến các chú thích khác ngoài dấu xóa không?

Không — nó ghi lại luồng nội dung dưới các dấu RedactAnnotation của nó; các loại chú thích khác trên trang không bị ảnh hưởng bởi lời gọi này.

Việc xóa có thể đảo ngược không?

Không — ApplyRedactions() là thao tác phá hủy. Giữ lại tệp gốc nếu nội dung chưa xóa cần được phục hồi sau này.

Xem thêm

 Tiếng Việt