Как сделать PDF нередактируемым
«Нередактируемый» означает три разные вещи, и выбирать надо по тому, от чего вы защищаетесь. Сплющивание превращает поля формы и комментарии в часть страницы: печатать в них больше нельзя, а словари аннотаций из файла удаляются. Права документа запрещают изменение, но исполняет запрет чужая программа просмотра. Растеризация уничтожает текстовый слой физически — редактировать нечего, но и поиск по документу пропадает.
Коротко о цифрах
- Сплющивание
- выполняется в браузере, файл не уходит на сервер
- Права документа
- серверная операция qpdf, файл до 50 МБ
- Растеризация
- текстовый слой не восстанавливается
- Судьба ссылок
- при сплющивании сохраняются, остальные аннотации удаляются
- Несплющенные поля
- перечисляются по именам и остаются интерактивными
Уровень первый: сплющить то, что заполняется
Заполненная анкета остаётся анкетой: поля живы, значения в них можно стереть и вписать другие, и сделает это любой, кто открыл файл. Сплющивание переносит внешний вид полей прямо в содержимое страницы, а сами поля удаляет. Внешне ничего не меняется, но печатать больше некуда.
Заодно решается менее очевидная проблема: текст комментариев и заметок перестаёт быть данными. Их словари вычищаются из файла, а не закрываются рисунком, поэтому рабочая переписка на полях не уедет получателю. Ссылки при этом сохраняются намеренно — у них нет внешнего вида, и удаление сломало бы навигацию впустую.
Уровень второй: права документа
Запрет на изменение выставляется вместе с шифрованием: файл перешифровывается qpdf, а в правах остаётся снятая галочка «изменение». Программа просмотра, которая права уважает, откажется сохранять правки. Файл при этом не меняется структурно: текст, шрифты и живые поля формы остаются на месте.
Значит, уровень работает ровно до первой программы, которая флаг не проверяет. Ставить его имеет смысл как заявление о намерении и как страховку от случайной правки, а не как замок. Сильная сторона у этого уровня другая: вместе с ним появляется пароль на открытие, а он защищает содержимое по-настоящему.
Уровень третий: растеризация
- Страницы переводятся в изображения и собираются обратно в PDF — текстового слоя не остаётся вовсе.
- Редактировать становится нечего: любая правка сведётся к рисованию поверх картинки.
- Цена высокая: пропадает поиск по документу и доступность для программ чтения с экрана.
- Вес обычно растёт, если только не сжимать результат до целевого размера.
- Разумно, когда документ уходит наружу как факт, а не как рабочий файл.
Что выбрать под конкретную задачу
- Заполненная анкета или заявление — сплющить: этого достаточно, и документ остаётся лёгким и поисковым.
- Прайс или коммерческое предложение — сплющить и выставить запрет изменения, чтобы правка требовала осознанных усилий.
- Документ с подписью, уходящий незнакомому получателю, — сплющить и поставить пароль на открытие.
- Документ, который нельзя пересобрать в редакторе ни при каких условиях, — растеризовать, приняв потерю поиска.
Частые вопросы
Сплющивание защищает документ от подделки?
Нет. Оно убирает интерактивный слой, но содержимое страницы остаётся обычным содержимым, которое можно перерисовать в редакторе. От подделки защищает криптографическая подпись, а её наш сайт не делает.
Можно ли отменить сплющивание?
Нет, операция односторонняя: полей после неё в документе нет, есть нарисованное изображение того, что в них было. Сохраняйте исходный файл с живой формой, если он ещё понадобится.
Что быстрее — сплющить или растеризовать?
Сплющивание. Оно переписывает только интерактивный слой, тогда как растеризация заново отрисовывает каждую страницу в изображение и собирает документ с нуля, то есть делает на порядок больше работы.
Останется ли документ поисковым после сплющивания?
Да. Текстовый слой страницы не трогается, меняется только интерактивный, поэтому поиск и выделение текста работают ровно так же, как до операции.