© 2001-2003
Алексей Алишевских
alexeya at gmail-dot-com

Last Modified:

FOP

(Formatting Objects Processor)

FOP (Formatting Objects Processor) - первая в мире издательская система, реализующая стандарт W3C XSL Formatting Objects для генерации печатных форматов из XML-документов. FOP изначально создан Джеймсом Тобером (James Tauber) и в настоящее время разрабатывается как открытый программный продукт в рамках Apache XML Project.

FOP является Java-приложением, преобразущим деревья объектов XSL FO в один из предопределенных визуальных форматов. Наиболее распространенной (и исторически первой по реализации) областью применения FOP является получение формата Adobe PDF. Однако, архитектура FOP такова, что движок обработки formatting objects независим от конечного формата.   Этот факт повлек за собой реализацию рендереров для самых разнообразных форматов . Так, версии FOP 0.20.x поддерживают  (помимо PDF) вывод в форматах Postscript, MIF (формат Adobe Framemaker), PCL (язык для принтеров HP) , Scalable Vector Graphics (SVG), форматированный plain text и XML (для задач тестирования). Заметьте, что в данный момент реализация этих форматов (за исключением PDF) является экспериментальной и может иметь некоторые проблемы. Кроме того, FOP реализует экранную визуализацию XSLFO-документа (средствами AWT) и прямой вывод документа на печать. В октябре 2001 года в FOP влился проект JFor  -- движок  XSLFO для получения RTF, но версий FOP, реализующих эту возможность, пока не выпущено.

Возможности FOP (0.20.4)

  • Частичная реализация спецификации XSL-FO Version 1.0 W3C Recommendation. По поводу соответствия FOP стандарту XSL FO, см. страницу FOP Standards Compliance на сайте проекта.
  • Реализация стандарта Adobe PDF 1.3, включая механизм CID-шрифтов
  • Поддержка многоязыковости, включая возможность отдельной настройки переносов для каждого языка. Паттерны переносов для многих языков (включая русский) входят в дистрибутив.
  • Подключение пользовательских шрифтов TrueType и Type1
  • Поддержка векторной графики Scalable Vector Graphics (SVG)
  • Встроенная поддержка графических форматов GIF, JPEG, а также EPS (экспериментально). С помощью внешних библиотек (Jimi или JAI) имеется возможность использовать любые форматы, поддерживаемые этими библиотеками (включая PNG, PSD, TIFF, BMP и т.д.)
  • Расширение XSL FO для создания PDF bookmarks (для просмотра в Acrobat Reader)
  • Возможность получения защищенных PDF файлов (PDF encryption)
  • Модульная архитектура, в частности, поддержка JAXP и TRAX API, а также Avalon Framework.
  • Возможность использования FOP Java API для обработки XSL FO в собственных приложениях. Удачный пример приложения, интегрированного с FOP -- популярная среда для XML-паблишинга Apache Cocoon, где FOP используется для динамической генерации PDF в он-лайне.

Русификация FOP

Начиная с версии 0.19 FOP корректно работает с кириллицей (как и с другими алфавитами), используя Unicode-шрифты. По сути, русификация FOP теперь сводится к подключению этих шрифтов для внедрения их CID-подмножеств в PDF. О том, как это сделать, читайте:

См. также: