Як редагувати 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

Перевірте встановлення, імпортуючи клас 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');

Типові проблеми та їх вирішення

Мітка редагування показує чорну коробку, але підлеглий текст все ще можна скопіювати. Page.ApplyRedactions() ніколи не викликалась (або була викликана до того, як мітка була додана). Маркування за допомогою AddRedact() самостійно лише малює анотацію над областю — вміст під нею знищується лише один раз ApplyRedactions() виконується.

ApplyRedactions() видалений вміст мітки rect не охоплював. rect є точно переписаною областю — текст або зображення, які лише частково перекривають її, все ще можуть бути частково знищені на межі. Розміри міток щедро охоплюють цільовий вміст.

Результати пошуку не можуть бути передані безпосередньо до Page.AddRedact(). Збіг з Page.SearchAnnotationText() містить метадані анотації, а не геометрію сторінки — це не та сама форма, що й rect an AddRedact() очікує позначка. Page.MarkRedactText(find, opts) and Page.RedactText(find, opts) є точками входу для редагування за пошуком тексту, і обидві також доступні на Document рівні, щоб обробити кожну сторінку одним викликом.

Редагування несподівано зберігається після шифрування. Редагування та шифрування — це незалежні операції — застосовуйте редагування перед збереженням з encrypt опціями, якщо мета — і видалити вміст, і обмежити доступ до залишку; застосування у зворотному порядку не скасовує вже зашифроване збереження.

Поширені запитання

У чому різниця між позначенням і застосуванням редагування?

AddRedact() лише створює анотацію, що описує, де заплановано редагування — охоплений вміст залишається недоторканим і все ще можна виділяти/копіювати, доки не запрацює ApplyRedactions() і не перезапише сторінку деструктивно.

Чи можу я редагувати, шукаючи текст, замість вказування прямокутника?

Так — Page.MarkRedactText(find, opts) позначає кожен збіг find для подальшого застосування, а Page.RedactText(find, opts) позначає і застосовує в один виклик. Обидва також доступні на Document для обробки всього документа.

Чи впливає ApplyRedactions() на анотації, окрім позначок редагування?

Ні — він переписує потік вмісту під власними позначками RedactAnnotation; інші типи анотацій на сторінці не змінюються цим викликом.

Чи можна скасувати редагування?

Ні — ApplyRedactions() є руйнівним. Збережіть оригінальний файл, якщо пізніше потрібно буде відновити незмінений вміст.

Дивіться також

 Українська