ru.bitel.common

## Class FOUtils

- java.lang.Object
- - ru.bitel.common.FOUtils

-     public class FOUtils
      extends java.lang.Object

  Всё для работы с FOP находится тут, также внутри статически хранится фабрика fop, для повторного использования. Здесь же инициализируется конфиг. Здесь методы для рендера в поток и для предварительных трансформаций (хотя они к fop не относятся как таковые). Может использоваться в сервере и в клиенте. Нужно во всём проекте работать с fop только через этот класс.
  Author:
    dimon

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `RENDER_AWT` рендер в AWT (используется с устанавливаением рендера AWTRenderer)
    `static java.lang.String` | `RENDER_PDF` рендер в PDF (используется с выходным потоком)
    `static java.lang.String` | `RENDER_PRINT` рендер в печать (используется с устанавливаением рендера PrintRenderer)
    `static java.lang.String` | `RENDER_RTF` рендер в RTF (используется с выходным потоком)

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FOUtils()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static org.apache.fop.apps.FOUserAgent` | `newFOUserAgent()` Получение FOUserAgent из factory.
    `static void` | `render(org.w3c.dom.Node fo, org.apache.fop.render.Renderer renderer, java.lang.String outputFormat)`
    `static void` | `render(javax.xml.transform.Source fo, java.io.OutputStream outputStream, java.lang.String outputFormat)` Рендер входного fo в выходной поток в каком-то указанном формате.
    `static void` | `render(javax.xml.transform.Source fo, org.apache.fop.render.Renderer renderer, java.lang.String outputFormat)` Рендеринг с перегружаемым рендером.
    `static void` | `render(javax.xml.transform.Source xml, javax.xml.transform.Source xslt, java.io.OutputStream outputStream, java.lang.String outputFormat)` Рендер входных xml+xslt в выходной поток в каком-то указанном формате.
    `static void` | `render(javax.xml.transform.Source xml, javax.xml.transform.Source xslt, org.apache.fop.render.Renderer renderer, java.lang.String outputFormat)` Рендер входных xml+xslt с перегружаемым рендером.
    `static javax.xml.transform.sax.SAXResult` | `renderSAXResult(org.apache.fop.apps.FOUserAgent userAgent, java.lang.String outputFormat)` Получение SAXResult рендера, указывается юзерагент и формат.
    `static javax.xml.transform.sax.SAXResult` | `renderSAXResult(java.io.OutputStream outputStream, java.lang.String outputFormat)` Получение SAXResult рендера, указывается стрим и формат.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### RENDER_PDF

          public static final java.lang.String RENDER_PDF

      рендер в PDF (используется с выходным потоком)
      See Also:
        Constant Field Values

    - #### RENDER_RTF

          public static final java.lang.String RENDER_RTF

      рендер в RTF (используется с выходным потоком)
      See Also:
        Constant Field Values

    - #### RENDER_AWT

          public static final java.lang.String RENDER_AWT

      рендер в AWT (используется с устанавливаением рендера AWTRenderer)
      See Also:
        Constant Field Values

    - #### RENDER_PRINT

          public static final java.lang.String RENDER_PRINT

      рендер в печать (используется с устанавливаением рендера PrintRenderer)
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### FOUtils

          public FOUtils()

  - ### Method Detail

    - #### newFOUserAgent

          public static org.apache.fop.apps.FOUserAgent newFOUserAgent()

      Получение FOUserAgent из factory. Для настройки его извне, используется в сложных случаях рендера.

    - #### renderSAXResult

          public static javax.xml.transform.sax.SAXResult renderSAXResult(java.io.OutputStream outputStream,
                                                                          java.lang.String outputFormat)
                                                                   throws org.apache.fop.apps.FOPException

      Получение SAXResult рендера, указывается стрим и формат. Используется в том числе в местах, где нужно как-то кастомно трансформировать, например, используя BGBilling-а XSLManager. Пример использования в таком случае:

           XSLManager.getInstance().transform( xml, xsltName, FOUtils.renderSAXResult( outputStream, outputFormat ) );

      Parameters:
        `outputStream` - выходной поток для записи
        `outputFormat` - формат (mime-константа FOUtils.RENDER_*)
      Returns:
        SAXResult, который надо сунуть в трансформер, например.
      Throws:
        `org.apache.fop.apps.FOPException` - ошибка FOP

    - #### renderSAXResult

          public static javax.xml.transform.sax.SAXResult renderSAXResult(org.apache.fop.apps.FOUserAgent userAgent,
                                                                          java.lang.String outputFormat)
                                                                   throws org.apache.fop.apps.FOPException

      Получение SAXResult рендера, указывается юзерагент и формат.
      Throws:
        `org.apache.fop.apps.FOPException`
      See Also:
        `renderSAXResult(OutputStream, String)`

    - #### render

          public static void render(javax.xml.transform.Source xml,
                                    javax.xml.transform.Source xslt,
                                    java.io.OutputStream outputStream,
                                    java.lang.String outputFormat)
                             throws org.apache.fop.apps.FOPException,
                                    javax.xml.transform.TransformerException

      Рендер входных xml+xslt в выходной поток в каком-то указанном формате. Если надо из строки, то new StreamSource(new StringReader(xmlstring)) Если из документа, то new DomSource(..)
      Parameters:
        `xml` - исходный документ xml в виде Source.
        `xslt` - шаблон xslt в виде Source.
        `outputStream` - выходной поток для записи
        `outputFormat` - формат (mime-константа FOUtils.RENDER_*)
      Throws:
        `org.apache.fop.apps.FOPException` - ошибка FOP
        `javax.xml.transform.TransformerException` - ошибка трансформации

    - #### render

          public static void render(javax.xml.transform.Source fo,
                                    java.io.OutputStream outputStream,
                                    java.lang.String outputFormat)
                             throws org.apache.fop.apps.FOPException,
                                    javax.xml.transform.TransformerException

      Рендер входного fo в выходной поток в каком-то указанном формате.
      Parameters:
        `fo` - исходный документ fo в виде Source
        `outputStream` - выходной поток для записи
        `outputFormat` - формат (mime-константа FOUtils.RENDER_*)
      Throws:
        `org.apache.fop.apps.FOPException` - ошибка FOP
        `javax.xml.transform.TransformerException` - ошибка трансформации
      See Also:
        `render( Source xml, Source xslt, OutputStream outputStream, String outputFormat )`

    - #### render

          public static void render(javax.xml.transform.Source xml,
                                    javax.xml.transform.Source xslt,
                                    org.apache.fop.render.Renderer renderer,
                                    java.lang.String outputFormat)
                             throws org.apache.fop.apps.FOPException,
                                    javax.xml.transform.TransformerException

      Рендер входных xml+xslt с перегружаемым рендером.
      Throws:
        `org.apache.fop.apps.FOPException`
        `javax.xml.transform.TransformerException`
      See Also:
        `render( Source fo, Renderer renderer, String outputFormat )`

    - #### render

          public static void render(javax.xml.transform.Source fo,
                                    org.apache.fop.render.Renderer renderer,
                                    java.lang.String outputFormat)
                             throws org.apache.fop.apps.FOPException,
                                    javax.xml.transform.TransformerException

      Рендеринг с перегружаемым рендером. Задаётся вместо выходного потока нужный рендер. Рендер должен быть заранее созданным, также ему должен соответствовать нужный outputFormat, за этим надо проследить. Здесь в создаваемый объект FOP перегружается юзер агент, где оверрайдится рендер, больше с рендером ничего не делается, т.е. всё в рендере надо настроить до его передачи сюда. Например, для AWTRenderer до вызова этого метода должно быть установлено при желании renderer.setPreviewDialogDisplayed(false)
      Parameters:
        `fo` -
        `renderer` -
        `outputFormat` -
      Throws:
        `org.apache.fop.apps.FOPException`
        `javax.xml.transform.TransformerException`

    - #### render

          public static void render(org.w3c.dom.Node fo,
                                    org.apache.fop.render.Renderer renderer,
                                    java.lang.String outputFormat)
                             throws org.apache.fop.apps.FOPException,
                                    javax.xml.transform.TransformerException

      Throws:
        `org.apache.fop.apps.FOPException`
        `javax.xml.transform.TransformerException`