Study - dev, blog archive, alivepdf

AlivePDF. Створення pdf-документів з flash

І Flash і PDF - давно відомі всім технології з чітко окресленим набором можливостей і сферою застосування. Може здатися, що ці сфери настільки різні, що нічого спільного у flash і pdf бути не може. Однак це не так. І як завжди трапляється на стику двох технологій, "суміш" pdf і flash не тільки можлива, а й дуже цікава.

Технічно, є величезна кількість бібліотек дозволяють генерувати "на льоту" pdf-документи; і доступні ці бібліотеки для різних мов: java. net, php. Наприклад, розробляючи навіть flash-інтерфейс для online-додатки, ви можете делегувати відповідальність за створення pdf-файлу зі звітом до серверного скрипту на php або java. Але якщо згадати, що спочатку я поставив собі за мету створення двох версій додатка, тобто online і настільної версії, що працює без підключення до internet і максимально спільного у них коду. То нам потрібно такий інструмент, який дозволить створювати pdf-документи без допомоги розташованих на сервер утиліт - тобто бібліотека створення pdf-файлу повинна бути написана на actionscript і виконуватися всередині flashplayer. Саме про це я і хочу розповісти на прикладі роботи з бібліотекою AlivePDF.

Весь наступний код я спеціально писав в середовищі adobe flash cs3, як більш знайомої для масового користувача. Але ви, звичайно, можете користуватися будь-який середовищем розробки, хоч flashdevelop, хоч adobe flex builder або intellij idea (починаючи з восьмої версії idea підтримує розробку flex і air-додатків). Для Adobe Flash CS3 заходимо в меню "Edit -> Preferences -> закладка ActionScript -> кнопка ActionScript 3 Settings". У діалоговому вікні вибираємо шлях до каталогу, де знаходяться вихідні AlivePDF (в вихідному архіві це Core / SWC - Sources). Після чого ви створюєте новий проект з типом ActionScript3 і імпортуєте основні пакети бібліотеки alivepdf:

Тепер починаємо писати, власне, код створює pdf-документ. Почнемо з того, що створимо "головний" клас PDF, вказавши при цьому його конструктору інформацію про орієнтацію сторінок документа, їх розмір (A3, A4, A5, LETTER, LEGAL, TABLOID) і використовуваних одиницях виміру.

Study - dev, blog archive, alivepdf

Ще з функцій, які напевно стануть в нагоді, можна згадати метод установки полів сторінки (ліво, верх, право, низ):

Отримавши в своє розпорядження сторінку, ми починаємо наповнювати її змістом. Навіть найпростіше - висновок тексту - можна зробити за допомогою різних методів і кожен з них має свої нюанси. Перед виведенням тексту потрібно встановити параметри шрифту за допомогою методу setFont, а за допомогою методу textStyle задається колір символів:

Наступні виклики методу writeText будуть продовжувати виводити текст на тому самому рядку, поки вона не закінчиться (або ви явно скасуєте рядок, вивівши символ "\ n"). Кожна з наступних рядків буде починатися з відступом щодо попередньої в 50 мм. Так що, якщо вказати недостатню висоту ліній, то текст, що виводиться зіллється. Виводячи текст можна не турбуватися про те, що висоти сторінки не вистачить для нього: alivepdf автоматично почне нову сторінку, як тільки це буде потрібно. Ще один спосіб виведення тексту - це метод addMultiCell. Він автоматично потурбується про перенесення тексту, якщо він не буде вміщатися в зазначений вами прямокутник шириною в 100 мм. Для того, щоб рядки не зливалися я вказав кожну нову рядок починати відступом від попередньої в 10 мм. Четвертий параметр включає відображення навколо області тексту прямокутника кордону. І останній параметр задає вирівнювання тексту по правому краю "R".

У тому випадку, якщо ви хочете отримати абсолютний контроль за позиціонуванням виведеного тексту, то можна використовувати метод setXY із зазначенням координат, перед тим як ви почнете друкувати текст:

Великий пласт функціональності alivepdf пов'язаний з малюванням 2d-примітивів. У наступному прикладі я покажу те, як можна намалювати коло і прямокутник (див. Рис. 2).

Study - dev, blog archive, alivepdf

Спочатку я викликав метод lineStyle, який налаштовує характеристики всіх змальованих в подальшому ліній (колір і товщина ліній). Потім я включаю режим заливки фону змальованих фігур методом beginFill (колір фону). В арсеналі AlivePdf є як "високорівневі" функції, які малюють відразу всю фігуру цілком (в прикладі коло), так і малюють фігуру з окремих ліній. У другому випадку я послідовно задаю координати всіх вершин полігону і завершую малювання (функція end).

Більш зручний спосіб малювання фігур-полігонів - це метод drawPolygone. Єдиним параметром для якого є масив з координатами вершин рисуемой фігури:

А тепер можна попросити alivepdf намалювати цю картинку:

Study - dev, blog archive, alivepdf

Наприклад, flash-додаток, що представляє собою конструктор дизайну інтер'єру, може скопіювати намальований на собі ж проект квартири в pdf-файл:

Остання дія, яка буде виконана після завершення підготовки pdf-файлу - так це його збереження. По-перше, файл можна відправити для збереження на сервер:

У разі, якщо ви створюєте air додаток, що має прямий доступ до файлової системи, то можна зберегти pdf-документ відразу на жорсткий диск, наприклад, так:

Я спеціально зупиняюся на тільки одній статті, що розповідає про AlivePDF. Оскільки можливостей щодо форматування вмісту pdf-документа дуже-дуже багато, а не хочу ставити перед собою завдання написання мало корисним супер-довідника. Досить того, щоб ви розуміли мету і сферу застосування alivepdf, а в деталях використання, конкретні параметри для конкретних функцій, можна розібратися, просто, експериментуючи.

Схожі статті