Единый источник в технической документации

Всё о принципе единого источника на русском

Menu

Создание PDF из файлов DocBook/XML (работа с FOP, часть 1)

Если вам требуется поставлять печатную документацию, то оптимальным способом ее создания является генерация файлов в формате pdf. Постараемся рассказать, как это делается с использованием свободного приложения FOP. Для лучшего восприятия теоретической информации выбрано направление: краткая теория(^) -> вводная практика(^) -> теория -> расширенная практика. (^) - в рамках текущего поста.

Немного из истории FOP (краткая теория)

Создание FOP (от Formatting Object Processor) - процессора печатного представления (FO-processor) от Apache Software Foundation можно разделить на два этапа:

  • на первом этапе в 1999-2003 годах были созданы начальные версии FOP 0.17-0.20 (с разными минорными версиями). До выпуска версии 0.19 русификация FOP предполагала достаточно объемные и сложные процедуры (пример для версии 0.17). Начиная с версии 0.19 FOP начинает корректно работать с русским языком с использованием т.н. xml-метрик шрифтов. Последняя из выпущенных стабильных версий на первом этапе была 0.20.5 (18.07.2003). До сих пор на просторах сети можно встретить различные FAQ по прикручиванию русского языка к ранним версиям FOP. В качестве примера можно привести проект Russian FOP на sourceforge. На текущий момент версия 0.20.5 полностью потеряла актуальность из-за слишком малого количества функций, которые реализуют соответствие со стандартом W3C XSL-FO 1.1

  • на втором этапе (в 2003 - по н.в.) сначала последовал долгий перерыв в целых 4 года. Лишь в начале 2007 года была выпущена новая стабильная версия 0.93. Большой перерыв был обусловлен сменой основных разработчиков (commiters) FOP и полностью переписанным кодом приложения. Эволюция приложения включала в себя, как новые соответствия спецификации W3C XSL-FO 1.1, так и, со временем, новые функциями для работы, включая автоматическое распознавание установленных шрифтов (отсутствие необходимости создавать xml-метрики шрифтов)

Краткая теория генерации печатного документа

Самое главное предназначение FO-процессора - перевод содержимого c объектами Formatting Objects - т.е. самого текста и текстового описания расположения объектов (шрифтов, цвета и т.п.) на странице в соответствующее объект.

Типичный fo-файл доступен по ссылке (тестовый fo-файл, 40 Kb). А это уже сформированный pdf документ из файла выше:

Внешний вид сформированного pdf-файла

Необходимо помнить, что основное предназначение FO-процессоров - генерация целевых форматов PDF (PostScript) из fo-объектов (файла .fo). В общем случае FO-процессор НЕ предназначен для генерации fo-объектов! Сами .fo-объекты генерируются из xml-файлов с помощью xslt-процессоров. Например, Saxon, Xalan, xsltproc - стандартно входит в Linux и MacOS, дополнительно его порт для Windows. Надо отметить, что FOP включает в себя xslt-процессор (Xalan) и с его помощью можно сразу получить из xml > pdf. Но это следует воспринимать, прежде всего, как дополнительную удобную функцию, не более того.

Запуск FOP и генерация pdf-документа (вводная практика)

Вся работа с FOP существляется в командной строке (не зависит от используемой ОС).

Здесь следует сделать оговорку, что т.к. FOP - это Java приложение, существует возможность программного вызова методов по API FOP'а из других приложений на Java. В качестве примера можно привести специальный fop-block в Apache Cocoon. Однако описание возможностей работы с FOP по API выходят за рамки этого поста.

Обратите внимание, что для корректной работы FOP на вашем компьютере должна быть установлена Java 1.7 и выше

Загрузите тестовый пример (архив tar.gz, 1.3 Kb), состоящий из:

  1. xml-документа в формате DocBook 5.1 (текущий стандарт);
  2. стилевого xsl-файла, который предназначен для преобразования xml в fo-объекты.

Затем загрузите и распакуйте FOP 2.2 (архив tar.gz, 19.7 Mb)

Если вы используется ОС Windows, то для распаковки архивов можете воспользоваться бесплатным архиватором 7-zip.

Проверьте корректную работу FOP на вашем компьютере:

fop -version

Если приложение установлено корректно, то у вас должна отобразится строка с текущей версий FOP:

FOP Version 2.2

В текущем посте вся работа происходит с файлами и шрифтами, хранящимися на сервере www.singlesourcing.ru и загружающимися в процессе работы по требованию. В следующих постах будет описана полная установка необходимых компонентов на локальный ПК.

Для получения готового pdf используйте команду:

fop -c fop-conf.xml -xml demo-document.xml -xsl docbook-fo.xsl -pdf demo-document.pdf

Вы можете открыть результирующий документ demo-document.pdf в любом приложении, работающим с pdf.

Также вы можете сравнить получившийся у вас результат с авторским, доступным здесь (pdf, 55 Kb)

...продолжение следует...

Вопросы, замечания, комментарии - в специальной ветке форума. Обратите внимание: необходима предварительная регистрация на форуме.

Написано Эдуард Тибет от Среда Июль 19, 2017

Постоянная ссылка -

« Тестовая запись