2016-09-30 3 views
1

Я пытаюсь преобразовать файл XSL-FO с MathML в PDF с помощью Apache FOP 2.1, но я получаю несколько предупреждений и ошибок.Как преобразовать в PDF из XSL-FO с помощью MathML

Как я могу получить MathML для печати в PDF с помощью FOP?

Мой Test.fo файл:

<?xml version="1.0" encoding="iso-8859-1"?> 

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns="http://www.w3.org/1998/Math/MathML"> 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="my-page"> 
      <fo:region-body margin="1in"/> 
     </fo:simple-page-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="my-page"> 
     <fo:flow flow-name="xsl-region-body" font="12pt Times"> 
      <fo:block font-size="1.5em" font-weight="bold" role="html:p"> 
       <fo:instream-foreign-object> 
        <math display="inline"> 
         <mrow> 
          <mi>A</mi> 
          <mo>=</mo> 
          <mi>Ï€</mi> 
          <msup> 
           <mi>r</mi> 
           <mn>2</mn> 
          </msup> 
         </mrow> 
        </math> 
       </fo:instream-foreign-object> 
      </fo:block> 
     </fo:flow> 
    </fo:page-sequence> 
</fo:root> 

Выход я:

$ ФОП test.fo 123.pdf

30 сентября 2016 1:45 : 12 PM org.apache.fop.events.LoggingEventListener processEvent ПРЕДУПРЕЖДЕНИЕ: Неизвестная форма tting object "{http://www.w3.org/1998/Math/MathML} найденная математика (ребенок fo: instream-foreign-object}. (См положение 13:72)

30 сентября 2016 1:45:12 PM org.apache.fop.events.LoggingEventListener ProcessEvent ВНИМАНИЕ: Неизвестный объект форматирования "{http://www.w3.org/1998/Math/MathML} mrow" встречается (ребенок .} математики (См положение 14:13)

30 сентября 2016 1:45:12 PM org.apache.fop.events.LoggingEventListener ProcessEvent ВНИМАНИЕ: Неизвестный объект форматирования "{} http://www.w3.org/1998/Math/MathML миля" встречается (а ребенок mrow}. (См. положение 15:12)

30 сен 2016 1: 45: 1 2 PM org.apache.fop.events.LoggingEventListener processEvent ПРЕДУПРЕЖДЕНИЕ: Неизвестный объект форматирования "{http://www.w3.org/1998/Math/MathML} mo" встречается (ребенок mrow}. (См положение 16:12)

30 сентября 2016 1:45:12 PM org.apache.fop.events.LoggingEventListener ProcessEvent ВНИМАНИЕ: Неизвестный объект форматирования "{} http://www.w3.org/1998/Math/MathML мили" встречается (ребенок . mrow} (См положение 17:12)

30 сентября 2016 1:45:12 PM org.apache.fop.events.LoggingEventListener ProcessEvent ВНИМАНИЕ: Неизвестный объект форматирования "{http://www.w3.org/1998/Math/MathML} MSUP" встречается (а (см. положение 18:14)

30 сен 2016 1: 45: 1 2 PM org.apache.fop.events.LoggingEventListener processEvent ПРЕДУПРЕЖДЕНИЕ: Неизвестный объект форматирования "{http://www.w3.org/1998/Math/MathML} mi" встречается (дочерний элемент msup}. (См положение 19:13)

30 сентября 2016 1:45:12 PM org.apache.fop.events.LoggingEventListener ProcessEvent ВНИМАНИЕ: Неизвестный объект форматирования "{} http://www.w3.org/1998/Math/MathML млн" встречается (ребенок . MSUP} (См положение 20:13)

Sep 30, 2016 1:45:12 PM org.apache.fop.events.LoggingEventListener ProcessEvent СУРОВОЙ: внутренние размеры в -русле внешней-объекта не мог определяется.(См. Позицию 12:33)

30 сен 2016 1:45:13 org.apache.fop.events.LoggingEventListener processEvent INFO: визуализированная страница # 1.

Выходной файл PDF пуст.

ответ

1

Проект с открытым исходным кодом JEuclid содержит плагин для FOP.

Несмотря на то, что plugin page заявляет, что он работает только с FOP 0.95beta или 0.95, я тестировал его с последним FOP 2.1, и он работает (0.95, вероятно, была последней версией на момент последнего обновления веб-страницы).

Это выход я получаю, без каких-либо ошибок или предупреждающее сообщение:

screenshot of resulting PDF

Вам просто нужно:

  • загрузить JEuclid
  • копия jeuclid-core-x.x.x.jar и jeuclid-fop-x.x.x.jar в ФОП-х lib/ (или создать ссылки)
  • запустить FOP как обычно
+0

Удивительного Спасибо! –

0

здание от ответа на lfurini, установка фат на Ubuntu 14.04 не узнавал Jar-файлы в jeuclid в (версия 3.1.9) в /USR/доли/фат (или некоторых вложенная папка/lib). Я смог заставить его работать, изменив /usr/bin/fop, который на самом деле является оболочкой оболочки оболочки. Модифицированные части следующим образом:

... 
find_jars /usr/share/fop/fop-hyph.jar 
find_jars /usr/share/fop/jeuclid-core-3.1.9.jar 
find_jars /usr/share/fop/jeuclid-fop-3.1.9.jar 
find_jars fop 
... 

С этим я был тогда в состоянии составить вышеуказанный файл без проблем с использованием

fop -fo test.fo -pdf test.pdf 
Смежные вопросы