Tại sao một ô đen là chưa đủ
Hầu hết các công cụ PDF cho phép người dùng "che thông tin" (redact) bằng cách vẽ một hình chữ nhật màu đen đè lên văn bản nhạy cảm. Hình chữ nhật này che đi các từ trên màn hình, nhưng các ký tự bên dưới vẫn nằm trong luồng nội dung (content stream) của tệp. Bất kỳ ai cũng có thể chọn văn bản bị ẩn, sao chép hoặc chạy một đoạn mã đơn giản để trích xuất nó. Nói cách khác, dữ liệu vẫn còn đó; ô đen chỉ là một lớp phủ về mặt thị giác.
Vấn đề mà nhà phát triển phải đối mặt
Tác giả cần một trình chỉnh sửa PDF chạy hoàn toàn trên trình duyệt mà không cần tải tệp lên máy chủ. Ràng buộc đó khiến việc dựa vào một dịch vụ back-end để loại bỏ văn bản trở nên bất khả thi. Các giải pháp phía client hiện có chỉ đơn giản là thêm một hình khối lên trên nội dung, điều này khiến văn bản gốc vẫn còn nguyên vẹn. Thách thức đặt ra là phải xóa văn bản vĩnh viễn trong khi vẫn giữ cho thao tác diễn ra nhanh chóng và tài liệu vẫn có thể sử dụng được.
Raster hóa trang có chọn lọc: ý tưởng cốt lõi
Thay vì chuyển đổi toàn bộ tệp PDF thành hình ảnh—một bước sẽ làm tăng dung lượng tệp và phá hủy khả năng tìm kiếm—giải pháp này chỉ raster hóa duy nhất những trang có chứa nội dung cần che. Những trang đó sẽ trở thành bitmap; tất cả các trang khác vẫn là PDF dạng vector, giúp bảo toàn khả năng chọn văn bản, tìm kiếm và giữ dung lượng tệp nhỏ.
Cách tiếp cận này tạo ra một tài liệu mang lại cảm giác bình thường: 19 trang vẫn sắc nét và có thể tìm kiếm được, trong khi trang nhạy cảm duy nhất là một hình ảnh chỉ gồm các điểm ảnh (pixel), nơi thông tin bị ẩn không còn tồn tại nữa.
Ba quy tắc thực tế để chuyển đổi đáng tin cậy
- Kết xuất ở tỷ lệ gấp ba lần – Bản bitmap được tạo ra với độ phân giải gấp ba lần độ phân giải bình thường của trang. Một bản kết xuất độ phân giải thấp sẽ trông mờ nhạt khi đặt cạnh các trang vector xung quanh, điều này có thể gây nghi ngờ hoặc đơn giản là trông thiếu chuyên nghiệp.
- Hợp nhất tất cả các yếu tố hình ảnh vào bitmap – Các chú thích (annotations), chữ ký, hình mờ (watermarks) và hình chữ nhật che thông tin được kết hợp lại với nhau trước khi trang được raster hóa. Việc trộn lẫn các chú thích dạng vector với một hình ảnh raster trên cùng một trang có thể làm rối các trình đọc PDF, dẫn đến lỗi hiển thị.
- Neo vào viewport, không phải pixel – Các chú thích được gắn với tọa độ viewport của trang. Khi người dùng phóng to, các yếu tố vẫn giữ nguyên vị trí thay vì bị lệch hoặc thay đổi tỷ lệ không nhất quán, điều mà nếu không thực hiện sẽ làm lộ văn bản bên dưới.
Phòng chống tình trạng tranh chấp (race conditions)
Việc kết xuất mỗi trang là một tác vụ bất đồng bộ. Nếu người dùng thay đổi kích thước cửa sổ trình duyệt một cách nhanh chóng, nhiều tác vụ kết xuất có thể chồng chéo lên nhau, tạo ra các khung hình bị lỗi hoặc đè lên nhau trên canvas. Việc triển khai đã đưa vào một token kết xuất cho mỗi trang: mỗi yêu cầu kết xuất mới sẽ làm mất hiệu lực của token trước đó, khiến tác vụ cũ tự hủy. Kết quả là một trải nghiệm mượt mà, không bị lỗi ngay cả khi giao diện người dùng thay đổi nhanh chóng.
Các đánh đổi là gì
Việc chuyển một trang thành bitmap sẽ loại bỏ mọi văn bản ẩn, nhưng nó cũng làm mất khả năng tìm kiếm hoặc sao chép nội dung của trang đó.
Hướng phát triển tiếp theo
Bài học rút ra
Một ô đen đơn giản không xóa dữ liệu; nó chỉ che giấu nó. Bằng cách chỉ chuyển đổi các trang cần che thông tin thành các bản bitmap độ phân giải cao và để phần còn lại của PDF ở dạng vector, một trình chỉnh sửa chỉ chạy trên trình duyệt có thể xóa vĩnh viễn văn bản nhạy cảm trong khi vẫn giữ cho tài liệu nhanh, có thể tìm kiếm và riêng tư. Phương pháp này cân bằng giữa tính bảo mật và khả năng sử dụng, nhưng người dùng nên lưu ý tác động tích lũy lên dung lượng tệp và khả năng tìm kiếm khi che thông tin trên nhiều trang.
