Редакція
PDF Oxide підтримує двофазний робочий процес редагування відповідно до специфікації PDF: спочатку позначте області для редагування за допомогою анотацій редагування, потім застосуйте редагування для малювання кольорових накладок, що приховують вміст. Цей підхід дає вам крок перевірки перед постійним приховуванням конфіденційної інформації.
Процес редагування
Стандартний процес редагування складається з трьох кроків:
- Позначення – Додайте анотації редагування для ідентифікації вмісту, що потрібно приховати
- Перевірка – Перегляньте позначені області перед застосуванням (опціонально)
- Застосування – Намалюйте накладки та видаліть анотації редагування
- Збереження – Запишіть відредагований PDF на диск
Крок 1: Додайте анотації редагування
Використовуйте API анотацій PdfPage для додавання анотацій редагування, що позначають області для видалення.
Python
from pdf_oxide import PdfDocument
doc = PdfDocument("confidential.pdf")
page = doc.page(0)
# Find sensitive text and mark it for redaction
for t in page.find_text_containing("SSN"):
bbox = t.bbox # (x, y, width, height)
page.add_highlight(bbox[0], bbox[1], bbox[2], bbox[3], (0.0, 0.0, 0.0))
doc.save_page(page)
Rust
use pdf_oxide::api::Pdf;
use pdf_oxide::writer::RedactAnnotation;
use pdf_oxide::geometry::Rect;
let mut doc = Pdf::open("confidential.pdf")?;
let mut page = doc.page(0)?;
// Mark a specific region for redaction
let redact = RedactAnnotation::new(
Rect::new(100.0, 700.0, 200.0, 14.0)
);
page.add_annotation(redact);
// Mark all text containing "SSN" for redaction
let sensitive = page.find_text_containing("SSN");
for t in &sensitive {
let redact = RedactAnnotation::new(t.bbox());
page.add_annotation(redact);
}
doc.save_page(page)?;
Крок 2: Застосуйте редагування
Коли анотації редагування на місці, застосуйте їх, щоб намалювати кольорові накладки над позначеними областями. Цей крок знаходить усі анотації редагування, відмальовує накладки та видаляє анотації редагування.
Застосування на одній сторінці
doc = PdfDocument("marked.pdf")
doc.apply_page_redactions(0)
doc.save("redacted.pdf")
import { WasmPdfDocument } from "pdf-oxide-wasm";
const doc = new WasmPdfDocument(bytes);
doc.applyPageRedactions(0);
const output = doc.save();
doc.free();
use pdf_oxide::editor::DocumentEditor;
let mut editor = DocumentEditor::open("marked.pdf")?;
editor.apply_page_redactions(0)?;
editor.save("redacted.pdf")?;
Застосування на всіх сторінках
doc = PdfDocument("marked.pdf")
doc.apply_all_redactions()
doc.save("redacted.pdf")
import { WasmPdfDocument } from "pdf-oxide-wasm";
const doc = new WasmPdfDocument(bytes);
doc.applyAllRedactions();
const output = doc.save();
doc.free();
let mut editor = DocumentEditor::open("marked.pdf")?;
editor.apply_all_redactions()?;
editor.save("redacted.pdf")?;
Перевірка стану редагування
Перевірка, чи позначено сторінку
doc = PdfDocument("input.pdf")
doc.apply_page_redactions(0)
print(doc.is_page_marked_for_redaction(0)) # True (before save)
let mut editor = DocumentEditor::open("input.pdf")?;
editor.apply_page_redactions(0)?;
assert!(editor.is_page_marked_for_redaction(0));
Скасування незавершених редагувань
Якщо ви передумали перед збереженням, зніміть позначку зі сторінки для скасування очікуваного редагування.
doc.unmark_page_for_redaction(0)
print(doc.is_page_marked_for_redaction(0)) # False
editor.unmark_page_for_redaction(0);
assert!(!editor.is_page_marked_for_redaction(0));
Повний процес редагування
Python
from pdf_oxide import PdfDocument
doc = PdfDocument("sensitive-report.pdf")
# Step 1: Add redaction annotations via the DOM
for i in range(doc.page_count()):
page = doc.page(i)
# Mark SSN patterns
for t in page.find_text_containing("SSN"):
bbox = t.bbox
page.add_highlight(bbox[0], bbox[1], bbox[2], bbox[3], (0.0, 0.0, 0.0))
# Mark email addresses
for t in page.find_text_containing("@"):
bbox = t.bbox
page.add_highlight(bbox[0], bbox[1], bbox[2], bbox[3], (0.0, 0.0, 0.0))
doc.save_page(page)
# Step 2: Apply all redactions
doc.apply_all_redactions()
# Step 3: Save the redacted document
doc.save("report-redacted.pdf")
Rust
use pdf_oxide::api::Pdf;
use pdf_oxide::writer::RedactAnnotation;
let mut doc = Pdf::open("sensitive-report.pdf")?;
let count = doc.page_count()?;
// Step 1: Mark regions for redaction
for i in 0..count {
let mut page = doc.page(i)?;
// Find and mark sensitive text
let ssn_matches = page.find_text_containing("SSN");
for t in &ssn_matches {
let redact = RedactAnnotation::new(t.bbox());
page.add_annotation(redact);
}
let email_matches = page.find_text_containing("@");
for t in &email_matches {
let redact = RedactAnnotation::new(t.bbox());
page.add_annotation(redact);
}
doc.save_page(page)?;
}
// Step 2: Apply redactions
let editor = doc.editor().unwrap();
editor.apply_all_redactions()?;
// Step 3: Save
doc.save("report-redacted.pdf")?;
Повний довідник API
Методи редагування DocumentEditor
| Метод | Повертає | Опис |
|---|---|---|
apply_page_redactions(page) |
Result<()> |
Застосувати редагування на одній сторінці |
apply_all_redactions() |
Result<()> |
Застосувати редагування на всіх сторінках |
is_page_marked_for_redaction(page) |
bool |
Перевірити, чи сторінка має незавершені редагування |
unmark_page_for_redaction(page) |
() |
Скасувати незавершені редагування для сторінки |
Методи Python (PdfDocument)
| Метод | Параметри | Опис |
|---|---|---|
apply_page_redactions(page) |
page: int |
Застосувати редагування на одній сторінці |
apply_all_redactions() |
– | Застосувати редагування на всіх сторінках |
is_page_marked_for_redaction(page) |
page: int |
Перевірити стан редагування |
unmark_page_for_redaction(page) |
page: int |
Скасувати незавершені редагування |
Важливі зауваження
- Візуальна накладка: Редагування малює кольоровий прямокутник над позначеною областю. Дані базового потоку вмісту візуально приховані, але можуть досі бути присутні у файлі. Для повного видалення розгляньте поєднання редагування зі збереженням із повним перезаписом.
- Двофазний процес: Завжди спочатку додавайте анотації редагування, а потім викликайте
apply_page_redactions()абоapply_all_redactions(). Виклик застосування без анотацій редагування не має жодного ефекту. - Незворотність: Після збереження візуальна накладка стає постійною. Завжди працюйте з копією оригінального документа.
- Колір: За замовчуванням редагування використовує чорну накладку. Використовуйте
RedactAnnotationз параметрами кольору для власних кольорів накладки.
Пов’язані сторінки
- Редагування анотацій – робота з анотаціями
- Операції зі сторінками – стирання вмісту (whiteout) як альтернатива
- Редагування тексту – пошук тексту для редагування
- Шифрування та безпека – обмеження доступу після редагування