Генерування PDF у Ruby on Rails за допомогою Prawn

pdf

Розглянемо генерування PDF-файлів засобами Ruby on Rails на прикладі одного із моїх робочих проекті. Роботу будемо проводити за допомогою gem'а Prawn

 

Добавляємо в Gemfile нашого проекту наступні записи:

та виконуємо bundle install

Включимо gem в автозагрузку (попередньо створивши файл) config/initializers/prawn.rb

При генеруванні pdf-файлу з кирилицею, для уникнення помилки:

Your document includes text that's not compatible with the Windows-1252 character set. If you need full UTF-8 support, use TTF fonts instead of PDF's built-in fonts .

необхідно підключити шрифт, наприклад verdatab.ttf

розпаковуємо архів в /public/fonts/verdana та підключаємо його(див далі)

Розглянемо простий приклад генерування pdf, на прикладі контроллера sklads_controller.rb, Якщо за адресою http://localhost:3000/admin/sklads. ми бачимо перелік товару на складу у вигляді веб-сторінки, то нижче наведений код, за посиланням http://localhost:3000/admin/sklads.pdf дасть pdf-файл, поки що із текстом "Hello"

disposition: "inline" дозволить відкрити pdf-файл у самому браузері, за змовчанням файл пропонується скачати, усі інші корисні опції prawn'а можна знайти на оф.сайті в розділі документації

У в'юсі лінк на pdf версію виглядатиме так

Як ми бачимо все працює, і pdf-файл із гордим заголовком Hello успішно відкрився 🙂

Створимо директорію для класів генерування pdf-файлів

Для автопідгрузки класів із цієї директорії в config/application.rb добавим:

Створимо клас app/pdfs/order_pdf.rb який буде генерувати pdf-файли дня наших веб-сторінок, у мене він виглядає так:

В контроллері:

Результат:

sklad_tovar

Посилання:

Prawn manual

Prawn-table manual

Ruby on Rails – Railscasts PRO #153 PDFs with Prawn (revised)

Генерация PDF с помощью Prawn