Для данного проекта используется XML-шаблон файла, который затем заполняется данными из JSON, объединяются и генерируются PDF-документы.Этот проект может использоваться в сценариях, требующих динамического создания PDF-файлов, таких как тестовые задания, контракты и т. д.
В данном проекте используется библиотека
ZXing
для генерации QR-кодов, которая требует версию JDK 1.7 или выше. Если это является проблемой и ваш проект не требует функциональности QR-кодов, вы можете отключить соответствующие части кода, чтобы он работал в среде JDK 1.6.
Шаблоны предоставляют фиксированное содержание документов, а также метки для данных, которые будут заменены. Вот пример простого шаблона:
<textpdf>
<para>Это фиксированное содержание, <value id="json_key" /> продолжение фиксированного содержания.</para>
</textpdf>
Часть <value id="json_key" />
будет заменена значением ключа json_key
из источника JSON-данных, остальное — это фиксированное содержание.
XML-шаблоны TextPDF ориентированы на описание формата страницы, такие как 'размер шрифта', 'жирный шрифт', 'курсив', 'отступ абзаца', 'пробел перед и после абзаца' и т. д., что позволяет создавать удовлетворительные PDF-документы. Единственным динамическим элементом в шаблоне являются теги <value id="some">
, которые заменяются значениями ключей с одинаковым названием из JSON. Вот более сложный пример шаблона:
<! -- Корневой тег шаблона должен быть textpdf -->
<textpdf>
<title>Это заголовок, его формат отличается от обычного абзаца, шрифт больше, и он центрирован.</title>
``` <title font-size="12">Размер шрифта для заголовка можно указать, чтобы изменить значение по умолчанию.</title>
<section>Это абзац, немного меньший по размеру, чем заголовок, и выровненный по левому краю.</section>
<para>Обычный абзац.</para>
<para font-family="heiti" font-size="11" font-style="жирный, подчеркнутый, курсив"
align="право" indent="22" space-before="12" space-after="20">Этот абзац определяет множество форматов.</para>
<para>Вы можете использовать <span font-style="жирный">элемент span для вложения стилей текста,</span> таким образом можно использовать несколько стилей внутри одного абзаца.</para>
</textpdf>
Шаблоны TextPDF поддерживают только базовые форматы страниц (посмотреть полное описание шаблонов).
TextPDF может преобразовать файлы .doc
в XML-шаблоны TextPDF. Для этого все поля вида ___________
(пустое место со знаками подчеркивания) автоматически преобразуются в теги <value>
XML-шаблона, что позволяет последующему формированию окончательного PDF-документа путём интеграции JSON-данных.
Шаблоны данных предоставляются в формате JSON, который имеет очень простую структуру — все данные шаблонов находятся внутри объекта data
, остальное не ограничено:
{
"data": {
"ключ1": "значение1",
"ключ2": "значение2"
},
"ваш": "Какой-то",
"мета": "Другой"
}
```
### Исходные данные в формате JSON
Обычно пользователи заполняют поля, необходимые для заполнения шаблона, используя XML-шаблон, затем сохраняют эти данные в базе данных или файл, а позже программа собирает PDF.
## Редактирование HTML
На практике пользователи должны вводить значения полей `<value>` из какого-либо источника. Для этого TextPDF может преобразовать XML-шаблон в HTML-файл, где все теги `<value>` будут заменены на HTML-вводные поля, доступные для заполнения пользователями.
## Последующее форматирование PDF
TextPDF позволяет обрабатывать существующие PDF-файлы, добавляя номер страницы (внизу страницы), водяные знаки, изображения и QR-коды.## Пример использования
### Использование командной строки
```bash
Использование:
java -jar textpdf.jar [ПАРАМЕТР] <xmlfile|docfile> [jsonfile]
Параметры:
-o имя_файла : Имя выходного файла
-f [pdf|html] : Формат выходного файла
-e кодировка : Кодировка выходного файла
-css путь1,... : Добавляет ссылку на CSS в выходной файл
-js путь1,... : Добавляет ссылку на JavaScript в выходной файл
-v : Вывод версии программы
-h : Вывод справочной информации
```
Файл `xmlfile` или `docfile` используется как источник шаблона документов, а `jsonfile` — как источник данных. По умолчанию имя выходного PDF-файла совпадает с именем `xmlfile`, но можно использовать параметр `-o` для изменения имени выходного файла.> С версии 0.2 стало возможным прямое преобразование файлов .doc в PDF, что достигается путём преобразования .doc в XML-шаблон, а затем преобразования XML-шаблона в PDF. Это сделано для удобства, однако основная цель TextPDF не заключается в конвертации .doc в PDF; для этой задачи лучше всего подходят такие инструменты, как LibreOffice.
### Вызов программы
```java
import com.lucky_byte.pdf.TextPDF;
try {
File xmlfile = new File("путь/до/xmlfile");
File jsonfile = new File("путь/до/jsonfile");
File pdffile = new File("путь/до/pdffile");
TextPDF.gen(xmlfile, jsonfile, pdffile);
} catch (Exception ex) {
ex.printStackTrace();
}
```
> С версии 0.3 метод `TextPDF.gen()` был отключен (так как он не предоставляет дополнительных параметров), теперь следует использовать объект TextParser, обратитесь к методу `main` в файле `TextPDF.java`.
Кроме возможности создания PDF-документов, TextPDF также способен создавать HTML-файлы для редактирования, а также выполнять конвертацию других типов файлов. Документ конвертации в XML шаблон, метод использования смотрите [API описание](http://git.oschina.net/lucky-byte/textpdf/wikis/API).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )