Чтобы правильно отредактировать PDF, вам нужно изменить поток контента. Это очень тяжело.
Если вы можете найти часть потока контента, которая рисует текст, который вы хотите удалить, вы на полпути.
Другая половина разбирается, как изменить поток контента, чтобы не изменять остальную часть документа. Если следующий оператор рисования текста выполняется командой «tm» (установите текстовую матрицу, которая абсолютно позиционирует следующий фрагмент текста), это легко. Если нет ... вам нужно рассчитать точную ширину заменяемого текста (это могут сделать несколько различных библиотек PDF) и изменить команды рисования, чтобы пропустить такое количество материала.
Например:
BT
/F1 10 Tf
1 0 0 1 30 720 Tm
(Here's some text, and you only want to REDACT that upper case "redact" over there)Tj
*
(This text is positioned relative to the previous line)Tj
1 0 0 1 30 650 Tm
(This text is positioned absolutely, starting at 30, 650)Tj
Таким образом, вам придется разбить эту первую строку (...)Tj
на (Here's some text, and you only want to)Tj
, N 0 Td
и (that upper case "redact" over there)Tj
..., где 'N' корректно корректирует положение следующей операции рисования текста так, что он приземляется ровно в том же месте. Поэтому вам нужно знать точную ширину «УДАЛЕНО», используя ресурс шрифта / F1 (каким бы он ни был), размером до 10 точек.
Просто чтобы сделать вашу жизнь более захватывающей, вам также нужно беспокоиться о кернинге. Вы можете обеспечить небольшую корректировку интервала, встроенную в текст, таким образом:
(взято из первого текста, нарисованного в спецификации PDF)
[(Adobe Sys)5(t)1(ems Inc)5(orporated)5( 20)5(08 \226 All rights)5( reser)-9(ved)]TJ
Чтобы правильно отредактировать «Incorporated», вам нужно определить, что он разбит на две строки, и отрегулировать расположение строки, следующей за ней, так, чтобы она находилась в точно том же месте.
И строки могут иметь <DEADBEEF>
шестнадцатеричные значения, а не (plain old ascii)
.
Понять идею? И я не раскрыл здесь все возможности, только самые распространенные.
Как я и сказал: это очень тяжело.
Существует плагин acrobat с именем Appligent Redax (без подключения), который позволяет рисовать аннотации (или генерировать их с помощью шаблонов, регулярных выражений и т. Д.), А затем запускать их код для обработки редактирования. Должна быть возможность программно создавать свои аннотации и, возможно, даже активировать их плагин: JS в документе может запускать пункт меню.