Дано: Програма або сервіс, з можливістю підготовки документів для друку. Комп'ютер з встановленою операційною системою Ubuntu (або Debian) і графічної середовищем. Будь-яке обладнання для друку.
Завдання: Зробити можливим друк готового документа .pdf з автоматичними змінами перед самим друком.
Якщо коротко, пропонована логіка роботи така: ми посилаємо документ на друк «в файл» (віртуальний принтер), далі при його збереженні спрацьовує скрипт, який змінює вміст документа і відправляє вже на фізичний пристрій друку.
1. Почнемо з установки програми, яка вміє "стежити" за подіями в файлової системі і реагувати потрібним нам чином.
] $ Sudo aptitude install incron
Після установки, налаштуємо програму incron
/etc/incron.conf - Головний файл конфігурації incron
/etc/incron.d/ - Директорія для конфігов завдань
Додамо, нове завдання для нашої задачі. Синтаксис завдань:
наприклад, для нашого скрипта, при створенні (збереженні) нового .pdf файлу
/ Var / www / html IN_CREATE /user/home/scripts/print_pdf.sh
Повний список можливостей і умов спрацювання incron, в man incron
2. Далі встановимо програму для редагування .pdf - pdftk. Pdftk вміє працювати з .pdf файлами з командного рядка, це зручно для використання в скриптах. Вона непроста і функціонал дуже об'ємний, але нам потрібно від неї зовсім небагато, а саме можливість "склеювання" двох .pdf документів (опція - background).
] $ Sudo aptitude install pdftk
] $ Pdftk in.pdf background back.pdf output out.pdf
В даному прикладі, програма використовує початковий файл in.pdf, далі за допомогою опції background і файлу back.pdf робить склеювання, і на виході отримуємо файл out.pdf
Повний список можливостей обробки документів в pdftk, в man pdftk
3. Після того як ми змогли змінити файл за допомогою pdftk, ми повинні організувати його друк. Друкувати будемо через стандартну консольную програму lp.
Приклад ізпользованія lp:
/ Home / user / print IN_CREATE /home/user/print/print.sh
Тепер коли ми посилаємо на друк «в файл» (віртуальний принтер, або просто зберігаємо) в директорію print, спрацьовує скрипт print.sh.
/ Usr / bin / lp -P 1 "$" / *. Pdf
/ Usr / bin / pdftk "$" / *. Pdf background "$" / back output "$" / out
/ Usr / bin / lp -P 1 "$" / out
Підсумок: Якщо нам потрібно роздрукувати документ pdf з потрібними доповненнями в змісті, ми просто вибираємо друк (або збереження) «в файл» і вибираємо директорію print, все інше зробить за нас incron, pdftk і lp. Ми отримали можливість друкувати підготовлений документ з автоматично редагуванням "на льоту" не вдаючись до додаткових, довгим і складним маніпуляціям з програмами для редагування pdf.