На цій сторінці
PDF-форма — це HTML-шаблон, у який застосунок підставляє дані документа. PDF формується на Android-пристрої; його можна відкрити для перегляду або надіслати через інший застосунок.
Для підстановки даних використовується мова шаблонів Chunk Templates. На окремій сторінці описано поля, фільтри, умови, цикли та обчислення.
Готовий приклад
Для замовлення можна використати архів із прикладом PDF-форми. Він містить:
| Файл | Призначення |
|---|---|
pdf_forms.xml | Перелік PDF-форм із формою «Замовлення». |
order_summary_uk.html | HTML-шаблон замовлення з товарами, знижками та підсумками. |
exchange-profile.xml | Профіль для додавання у ваш exchange.xml. |
README.txt | Короткий порядок встановлення. |
Завантажений HTML-файл є шаблоном: значення тегів з'являться після формування PDF у застосунку.
Перелік форм — pdf_forms.xml
<?xml version="1.0" encoding="utf-8"?>
<pdf-forms>
<document name="order">
<forms>
<form lang="uk">
<presentation>Замовлення</presentation>
<file>order_summary_uk.html</file>
</form>
</forms>
</document>
</pdf-forms>
| Елемент або атрибут | Призначення |
|---|---|
<document name="…"> | Документ, для якого доступна форма. Для замовлення — order, оплати — invoice, стор-чеку — storecheck. |
<forms> | Перелік форм цього документа. |
<form> | Одна форма. |
lang | Код мови інтерфейсу застосунку. Для української — uk. Атрибут необов'язковий. |
<presentation> | Назва форми, яку бачить користувач під час вибору. |
<file> | Точне ім'я HTML-файла з розширенням. |
Для кількох форм додайте окремі <form> усередину <forms>. Файл pdf_forms.xml задає повний перелік PDF-форм: приклад вище залишає лише одну форму замовлення. Щоб зберегти інші форми, додайте їхні записи до цього самого файла та передайте відповідні шаблони.
Застосунок спочатку вибирає форми з lang, що відповідає поточній мові інтерфейсу. Якщо таких немає — форми без lang. Якщо немає й форм без мови, показуються всі форми цього документа. Коли доступна одна форма, вона використовується відразу; для кількох застосунок пропонує вибір.
HTML-шаблон
Зберігайте HTML-шаблон у UTF-8. Розміщуйте стилі всередині файла, а сам шаблон — поруч із pdf_forms.xml на пристрої. У <file> вказуйте ім'я без шляху до теки.
У шаблоні використовуються теги для підстановки значень:
<h1>Замовлення № {$doc.number|html}</h1>
<p>Дата: {$doc.date_localized|html}</p>
<p>Клієнт: {$doc.customer_name|html}</p>
Для замовлення доступні такі групи даних:
| Група | Приклади |
|---|---|
doc | {$doc.number}, {$doc.date_localized}, {$doc.customer_name}, {$doc.sum}, {$doc.discount}. |
doc.customer | Поля клієнта з довідника: наприклад, {$doc.customer.code} або додаткове поле адреси. |
we | Реквізити компанії: {$we.company}, {$we.address}, {$we.registration}, {$we.billing}, {$we.comment}. |
table | Рядки табличної частини документа. Використовується в циклі. |
row.product | Поля товару з довідника в поточному рядку: наприклад, {$row.product.measure_unit}. |
Назви полів мають відповідати схемі документа та довідникам. Наприклад, додаткова адреса клієнта буде доступна лише за наявності відповідного поля в завантаженому довіднику.
Рядки документа
<table>
<thead>
<tr>
<th>Товар</th>
<th>Кількість</th>
<th>Коефіцієнт</th>
<th>Ціна</th>
<th>Сума</th>
</tr>
</thead>
<tbody>
{% loop in $table as $row %}
<tr>
<td>{$row.name|html}</td>
<td>{$row.count|number}</td>
<td>{$row.koef|number}</td>
<td>{$row.price|decimal}</td>
<td>{$row.sum|decimal}</td>
</tr>
{% onEmpty %}
<tr>
<td colspan="5">У документі немає товарів</td>
</tr>
{% endloop %}
</tbody>
</table>
count — введена кількість, koef — кількість базових одиниць у введеній одиниці, price — ціна базової одиниці. Наприклад, дві фасовки по шість одиниць передаються як count=2 і koef=6.
У прикладі html готує текст для HTML, number форматує кількість без зайвих кінцевих нулів, а decimal — суми з двома десятковими знаками. Повний опис цих фільтрів, перевірок порожніх реквізитів і нумерації рядків є на сторінці Мова шаблонів — Chunk.
Передавання й перевірка
-
Розпакуйте архів із прикладом.
-
Покладіть
pdf_forms.xmlтаorder_summary_uk.htmlбезпосередньо вoutboxпристрою. Якщо використовуєте інші форми, спочатку узгодьте їхній перелік уpdf_forms.xml. -
Додайте вміст
exchange-profile.xmlусередину<palm-client>вашогоexchange.xml:<exchange name="pdf_forms" view="Завантажити PDF-форми"> <get> <files> <file name="pdf_forms" files="pdf_forms.xml"/> <file name="order_summary_pdf" files="order_summary_uk.html"/> </files> </get> </exchange> -
На пристрої виконайте Завантажити файл обміну, потім Завантажити PDF-форми. Перевірте журнал обміну.
-
Заповніть реквізити компанії, відкрийте замовлення з товарами й виберіть Перегляд у меню документа.
-
Перевірте поля, кількість, ціни, знижки та підсумки. Окремо перевірте документ із довгими назвами й великою кількістю рядків, щоб оцінити розбивку на сторінки.
-
Виберіть Поділитися й перевірте надсилання PDF потрібним застосунком.
PDF містить значення відкритого документа на момент формування. Після редагування документа сформуйте файл повторно.
Якщо PDF не формується
| Симптом | Що перевірити |
|---|---|
| Перегляд і Поділитися недоступні | Отримання pdf_forms.xml, правильність XML і наявність форм для цього документа. |
| Потрібної форми немає у списку | Значення name документа, записи <form> та правила вибору за lang. |
| Помилка підготовки форми або порожній вміст | Чи завантажено HTML-файл, чи збігається його ім'я з <file> та чи має він розширення .html. |
У формі порожні поля або залишилися теги {$…} | Назви тегів, дані відкритого документа, реквізити та поля завантажених довідників; для необов'язкових полів — заміну або умову в шаблоні. |
| PDF створено, але він не відкривається | Наявність застосунку для перегляду PDF на пристрої. |
| Неправильна точність кількості | Фільтр number або налаштування відповідної колонки, якщо використано тег _display. |
