Apache Fop

Тема в разделе "Lotus + Java + LS2J", создана пользователем garrick, 10 июн 2013.

  1. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Наверное ругаться на меня будете, но всё равно спрошу. Как запустить FOP в Lotus Notes? Что бы формирование PDF производилось на рабочем месте клиента. Создал библиотеку со всеми необходимыми файлами (fop.jar и все jar-файлы из папки lib от fop). Беру пример How to Embed Apache FOP in a Java application, совместил всё это, запускаю

    Вываливается exeption

    Код (Text):
    java.lang.UnsupportedOperationException: Don't know how to handle "application/pdf" as an output format. Neither an FOEventHandler, nor a Renderer could be found for this output format.
    at org.apache.fop.render.RendererFactory.createFOEventHandler(RendererFactory.java:360)
    at org.apache.fop.fo.FOTreeBuilder.<init>(FOTreeBuilder.java:105)
    at org.apache.fop.apps.Fop.createDefaultHandler(Fop.java:100)
    at org.apache.fop.apps.Fop.<init>(Fop.java:78)
    at org.apache.fop.apps.FopFactory.newFop(FopFactory.java:297)
    at org.apache.fop.apps.FopFactory.newFop(FopFactory.java:274)
    at JavaAgent.NotesMain(JavaAgent.java:39)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    Гугль выдал пару каких-то невразумительных ссылок по этому поводу, ни одна из них не содержит решения проблемы. Коллеги, ведь кто-то же из вас делал это?

    Добавлено: Был бы ещё более признателен, если кто-то научил меня использовать в клиенте Lotus Notes результаты работы этого чуда Oracle BI Publisher Desktop без правки у всех пользователей java.policy. Тоже ругается
    Код (Text):
    java.security.AccessControlException: Access denied (java.util.logging.LoggingPermission control)
    at java.security.AccessController.checkPermission(AccessController.java:132)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:544)
    at COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.java:1449)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1617)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464)
    at java.util.logging.LogManager.checkPermission(LogManager.java:297)
    at java.util.logging.Handler.checkPermission(Handler.java:406)
    at java.util.logging.Handler.setLevel(Handler.java:400)
    at java.util.logging.Logger.initHandler(Logger.java:468)
    at java.util.logging.Logger.getHandlers(Logger.java:484)
    at java.util.logging.Logger.log(Logger.java:1127)
    at java.util.logging.Logger.logp(Logger.java:1165)
    at oracle.xdo.common.log.JDKLogImpl.write(JDKLogImpl.java:127)
    at oracle.xdo.common.log.Logger.log(Logger.java:304)
    at oracle.xdo.template.FOProcessor.logMemoryStatus(FOProcessor.java:2303)
    at oracle.xdo.template.FOProcessor.generate(FOProcessor.java:1267)
    at JavaAgent.NotesMain(JavaAgent.java:39)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    Лицензионная политика и отсутствие исходников (в первую очередь :)) не позволяет вырубить Logger в этой штуке.
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    ФОП юзает свои либы, ЕМНИП - там есть синглтоны и фактори всякие, кот. в условиях нотусёвой жвм (её класслоадера) будет сложно заюзать (пихая их в БД)
    а потому, как пр-ло, кладутся они в jvm/lib/ext (на каждом локальном клиенте)...
    в БД OpenXLS есть код, кот. выгружает либы из нотусевого дока на локал (там тупо получаем java home)
    в навигаторе "Настройки" Action->Jar Libraries 2 lib/ext (на соответ. доке)
    у мя в доках POI и OpenXLS

    Добавлено: второй вопрос - это премишены, читать http://codeby.net/forum/threads/46120.html?hl...ontrolException
     
  3. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Эх, блин! Некошерно как-то получается. И конфиг со шрифтами выкладывать надо?
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    нет - не надо, сморим пример https://sites.google.com/site/lmiketonetwoo...ject-definition
    там бд и все пироги, здесь (на форуме) лежать отрывки из этой БД

    Добавлено: см. агент FOPbased
    берет шрифты из системы, конфиг прописан в стринге, XSL берет из дока

    Добавлено:
    хотите кошерности - пишите свой класслоадер, прописывайте пермишены на каждой клиентской машине :(...
    но мне почему-то кажется - вас такой путь не устроит
     
  5. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    это ещё более некошерно.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    ну значит ещё - пишите свой плагин к эклипсу (если грим о 8.5.х) и делайте деплоймент, по подобию Extension Library (http://extlib.openntf.org/)
    это самый "кошерный способ" :(
     
  7. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Выложил все библиотеки в jvm/lib/ext, теперь опять проблема с Logger'ом
    Код (Text):
    java.security.AccessControlException: Access denied (java.util.logging.LoggingPermission control)...
    Версия FOP -1.0 и 1.1, посмотрел 0.95 - там тоже присутствует Apache Commons-Logging. У вас это работает? С какой версией FOP?
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    у меня, 7.х всё работает
    на 8-ке 9-ке - надо смореть, про логер - подозреваю что пересекается со штатным
    лечение конкретной ошибке я указал выше, но надо посмотреть по присут. штатного логгера (и м.б. - выбросить тот кот. есть в поставке с ФОП)
     
  9. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Без него не взлетает, говорит "Не могу найти класс...". Подкладываю commons-logging вываливается Access denied. Штатный логгер есть в Java 1.6, но common-logging и должен его использовать, если другого не найдёт. Может ему попробовать какой-нибудь Log4J подсунуть?
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    только что попробовал на 9.0 - все jar из lib (архив fop 0.95) сложил в lib/ext
    никаких ошибок...
    а вот ежели нек. jar не положить (проверять не стал - какие) - то можно получить вышеописанную
     
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    выяснил, ошибка возникает при отсутствии batik-all-1.7.jar
    файл xercesImpl-2.7.1.jar "не нужен" т.к. у мя используется дефолтный
    Код (Java):
    // Resulting SAX events (the generated FO) must be piped through to FOP
    Result res = new SAXResult(fop.getDefaultHandler());
    а он в системе есть
    КМК я игрался с разными (плохо помню) но сильного различия не увидел
    по поводу логинга ваще (апаче ФОП) - используется commons-logging-1.0.4.jar , а вот бэкэнд мона настроить http://xmlgraphics.apache.org/fop/0.95/embedding.html
     
  12. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Всё равно не работает. Ошибка та же. Пробовал с FOP 0.95, 1.0 и 1.1
    Остаётся либо править FOP под себя, либо искать альтернативу.
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    видать еще чёто наставили (из доп. либ)
    поставьте чистый нотус (да хоть в виртуалку) и смотрите список штатных либ
    я проверял и на 9.0 и на 7.04 - все работает (я про свой код и БД)
     
  14. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Из доп.либ. стоит только Oracle JDBC - всё остальное в jvm/lib/ext исключительно родное от Lotus Notes.
    Может у меня с самим кодом что-то не в порядке? Есть какой-нибудь пример (именно в Lotus Notes) посмотреть?
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    яж дал ссылку на проект - там и БД с кодом, агент называется FOPbased

    Добавлено: ТОС есть, в нем с чего начать

    Добавлено: сразу БД
     
  16. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Код (Text):
    Exported 122585 bytes
    <?xml version='1.0'?>
    <DXLExporterLog>
    </DXLExporterLog>
    FOP ExampleXML2PDF

    Preparing...
    Output: PDF (c:\examples\embedding\out\ResultXML2PDF.pdf)

    Transforming...
    java.security.AccessControlException: Access denied (java.util.logging.LoggingPermission control)
    at java.security.AccessController.checkPermission(AccessController.java:132)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:544)
    at COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.java:1449)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1617)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464)
    at java.util.logging.LogManager.checkPermission(LogManager.java:297)
    at java.util.logging.Handler.checkPermission(Handler.java:406)
    at java.util.logging.Handler.setLevel(Handler.java:400)
    at java.util.logging.Logger.initHandler(Logger.java:468)
    at java.util.logging.Logger.getHandlers(Logger.java:484)
    at java.util.logging.Logger.log(Logger.java:1127)
    at java.util.logging.Logger.logp(Logger.java:1165)
    at org.apache.commons.logging.impl.Jdk14Logger.log(Jdk14Logger.java:91)
    at org.apache.commons.logging.impl.Jdk14Logger.warn(Jdk14Logger.java:242)
    at org.apache.fop.fonts.FontCache.loadFrom(FontCache.java:146)
    at org.apache.fop.fonts.FontCache.load(FontCache.java:117)
    at org.apache.fop.apps.FopFactory.setUseCache(FopFactory.java:692)
    at org.apache.fop.apps.FopFactory.<init>(FopFactory.java:158)
    at org.apache.fop.apps.FopFactory.newInstance(FopFactory.java:166)
    at ExampleXML2PDF.NotesMain(ExampleXML2PDF.java:99)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    Ну, пойду попробую Lotus Notes переставлю. B)
     
  17. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    получилось?
     
  18. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Поставил 8.5.2, скопировал все библиотеки куда надо - работает. И с FOP 0.95 и с 1.1. Правда на вашем примере поругалось что-то, видать ему шаблон чем-то не понравился, но пример embedded XML2PDF от FOP запускается. Теперь надо с русскими шрифтами разобраться.

    Ещё неплохо бы понять "что это было?", наверняка на каком-нибудь клиенте это всплывёт снова. Надо бы уметь починить не только полной переустановкой. У меня стоял Designer 8.5.3 c Upgrade Pack 1. Может из-за этого Upgrade Pack всё дело?
     
  19. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    теоретически надо проводить трэйс - куда либы обращаются, на чистой установке и на той кот. глючит
     
  20. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    в моем агенте шрифты настраиваются в джава стринге, ничего не мешает сделать настроечный документ
     
Загрузка...

Поделиться этой страницей