Офіційний каталог функцій Doconut перераховує друк у браузері та експорт у PDF як можливості переглядача. Керування доступом до них все ще вимагає двох окремих рішень: чи Doconut показує відповідну дію та чи хост‑застосунок авторизує цю операцію для поточного користувача та документа.

Для отримання точних налаштувань, підтримуваних вашою встановленою збіркою, розпочніть з документації Doconut та упакованих прикладів, доступних на офіційній сторінці завантаження Doconut. Не копіюйте ключі конфігурації чи вихідний код з несумісної версії або неперевіреної статті.
1. Спочатку визначте політику друку
Запишіть, хто може друкувати і за яких умов, перед тим як змінювати панель інструментів. Корисна політика відповідає на такі питання:
- Чи дозволено друк для кожного переглядача, лише певних ролей або конкретних документів?
- Чи залежить рішення від орендаря, статусу справи, класифікації документа або терміну дії?
- Чи потрібен водяний знак на друкованому виході?
- Чи потрібно аудитувати події друку?
- Чи може користувач надрукувати стару ревізію документа?
- Що робити, коли дозволи змінюються під час відкритого попереднього перегляду?
Уникайте єдиного глобального булевого значення, коли реальне правило контекстуальне. Моделюйте друк як окрему операцію, щоб її можна було авторизувати незалежно від перегляду та завантаження.
2. Розділіть стан інтерфейсу від авторизації
Хост‑сторінка може вирішити, чи показувати кнопку друку, після отримання результату авторизації, що належить застосунку. Це підвищує зрозумілість для користувачів, яким друк недоступний.
Проте приховування елемента не є межою авторизації. Користувач все ще може викликати відомий кінцевий пункт напряму, повторити попередній запит або ініціювати друк у браузері на видимому вмісті. Кожен серверний маршрут, що генерує друкований вихід, має дотримуватись тієї ж політики.
Використовуйте чіткі стани в інтерфейсі:
| Стан | Поведінка переглядача | Поведінка сервера |
|---|---|---|
| Друк дозволений | Показати підтримувану дію друку | Авторизувати та створити запитаний вихід |
| Друк заборонений | Приховати або вимкнути дію з чітким поясненням | Повернути відповідь «заборонено» |
| Політика невідома | Тримати дію недоступною, доки завантажуються дозволи | Не створювати вихід |
| Сесія закінчилася | Попросити користувача повторно автентифікуватись | Відхилити застарілий запит |
3. Захистіть кінцеву точку друку
Захистіть операцію застосунку, що викликає друк або повертає друкований вихід. Рішення про авторизацію має враховувати членство в орендарі, власність, класифікацію, стан робочого процесу та ревізію документа. Визначайте документ на сервері, а не приймайте шлях або URL сховища, надані клієнтом.
Якщо ваш застосунок друкує через маршрут, специфічний для переглядача, а не створює PDF, застосуйте ту ж авторизацію перед викликом цього маршруту.
4. Налаштуйте встановлену версію переглядача
Після того, як серверне правило створено, налаштуйте UI Doconut, використовуючи точний параметр, задокументований для пакету та зразкових файлів, що постачаються з вашою версією. Живі демонстрації Doconut дозволяють спостерігати підтримувану поведінку переглядача перед тим, як впроваджувати конкретну інтеграцію. Перевірте:
- Де встановлюється параметр: серверна конфігурація, модель представлення або ініціалізація клієнта.
- Чи приховує він пункт панелі інструментів, вимикає дію або впливає на згенерований вихід.
- Чи застосовується значення до окремого екземпляра переглядача або глобально.
- Чи є друк і експорт окремими операціями.
- Чи змінила оновлення назву параметра або його значення за замовчуванням.
Ставте офіційний приклад за основу правди. Приваблива назва властивості не є достатнім доказом того, що встановлений переглядач її розпізнає.
5. Чесно працюйте з друком у браузері
Налаштування переглядача не може гарантувати, що видима інформація ніколи не буде надрукована або захоплена. Браузер може надрукувати хост‑сторінку, а користувачі можуть робити скріншоти або фотографії. Перехоплення клавіш та CSS, специфічний для друку, можуть покращити очікуваний досвід, проте їх можна обійти на боці клієнта.
Якщо хост‑сторінка не повинна створювати корисну паперову копію, ваш застосунок може використати власну презентацію, специфічну для друку, замінюючи попередній перегляд пояснювальним повідомленням. Тримайте таку поведінку хост‑сторінки окремо від задокументованих контролів Doconut.
Не називайте це захистом документа. Використовуйте серверне рендеринг, авторизацію, контрольовані експортні процеси та видимі водяні знаки, коли ваша оцінка ризиків вимагає більшої стримливості.
6. Тримайте завантаження, експорт і друк окремо
Користувачі та розробники часто сприймають їх як один «режим лише для читання», проте це різні потоки даних:
- Перегляд відображає відрендерений вміст.
- Завантаження повертає вихідний файл або інший збережений файл.
- Експорт створює похідний формат.
- Друк генерує друковане представлення або викликає друк у браузері.
Авторизуйте кожну операцію окремо. Користувач, якому заборонено друк, може мати право завантаження, і навпаки. Ваша панель інструментів повинна відображати рішення сервера, а не визначати їх.
7. Додайте корисні аудиторські події
Якщо друк чутливий, реєструйте рішення без запису самого документа. Подія може містити користувача, орендаря, ідентифікатор документа, ревізію, результат політики, часову мітку та кореляційний ID.
Записуйте як успішні, так і відхилені спроби. Якщо сервіс друку створює тимчасовий файл, також фіксуйте, чи завершилося його очищення. Тримайте шляхи до файлів, токени, назви документів, що містять персональні дані, та друкований вміст поза звичайними журналами.
8. Тестуйте поза межами відсутньої кнопки
Панель інструментів — лише перша перевірка. Додайте тести для всієї операції:
Авторизований користувач
- Очікувана дія друку видима.
- Запит на друк успішний для дозволеного документа.
- Використовується правильна ревізія.
- На згенерованому виході присутні необхідні позначки.
- Аудиторська подія реєструє успіх.
Неавторизований користувач
- Дія відсутня або вимкнена.
- Прямий запит до маршруту друку повертає відповідь «заборонено».
- Зміна ідентифікатора документа не обходить правило.
- Скопійоване посилання з авторизованої сесії не може бути використане неправильно.
- Відмова не розкриває, чи інший орендар володіє документом.
Зміни стану
- Відкликання дозволу під час сесії застосовується до наступного запиту на друк.
- Закінчена сесія не може друкувати.
- Видалений або замінений документ генерує контрольовану помилку.
- Тимчасовий друкований вихід дотримується налаштованого правила зберігання.
Автоматизація браузера може перевіряти видимий стан і код відповіді. Інтеграційні тести мають підтверджувати оцінку політики та авторизацію на рівні документа незалежно один від одного.
Поширені питання
Чи зупиняє приховування кнопки друку гарячі клавіші друку браузера?
Ні. Це лише видаляє передбачену дію переглядача, якщо встановлений переглядач реалізує таку поведінку. Друк у браузері та захоплення екрану потребують окремого розгляду і не можуть бути повністю запобігані клієнтським кодом.
Чи слід включати дозвіл на друк у посилання перегляду?
Надавайте рішення про авторизацію на боці сервера, прив’язане до автентифікованого користувача, документа та операції. Якщо тимчасове посилання несе дозволи, обмежте його діапазон, захистіть від журналів і реферерів і повторно перевіряйте чутливі дії.
Чи достатньо вимкнути друк для конфіденційних документів?
Ні. Це лише один з елементів управління або стримування. Конфіденційні процеси також потребують захисту сховища, авторизації на рівні об’єкта, контрольованих експортів, правил зберігання, моніторингу та прийнятої моделі залишкового ризику.
Висновок
Надійна реалізація контролю друку Doconut починається на сервері і закінчується в інтерфейсі. Визначте політику, захистіть операцію, налаштуйте лише задокументований параметр вашого встановленого переглядача, поясніть результат користувачам і протестуйте прямі запити, а також видимість панелі інструментів. Користуйтеся офіційною сторінкою функцій, документацією, завантаженнями та демо‑версіями як джерелами реалізації, а не відтворюйте код продукту у статті.