Как использовать поплавки с XSL-FO в C# (NFop)?

Вопрос: NFop поддерживает поплавки?

Предыстория: у меня есть требование создать печатный отчет, содержащий номера страниц, корпоративный логотип и таблицу данных. Отчет предназначен для веб-проекта, и изначально я думал о том, чтобы сделать его в чистом HTML с таблицей стилей для печати CSS, однако номера страниц и разбиение ячеек таблицы, похоже, являются проблемой.

Из-за этого я решил пойти по пути генерации PDF, используя XSL для генерации XSL-FO и NFop для генерации PDF. Тем не менее, кажется, что NFop не поддерживает <fo:float> часть XSL-FO?

Ниже приведен штраф:

<fo:block>
  <fo:external-graphic src="c:\Projects\NFopSpike\NFopSpike\logo.jpg" />
  <fo:block>
    Foo
  </fo:block>
  <fo:block>
    Bar
  </fo:block>
</fo:block>

Ниже полностью пропущен рисунок:

<fo:block>
  <fo:float float="start">
    <fo:external-graphic src="c:\Projects\NFopSpike\NFopSpike\logo.jpg" />
  </fo:float>
  <fo:block>
    Foo
  </fo:block>
  <fo:block>
    Bar
  </fo:block>
</fo:block>

Альтернативное решение, которым я сейчас пользуюсь, - это создать отдельный контейнерный блок, который будет абсолютно точно расположен там, где должно появляться всплывающее изображение, и убедитесь, что другое содержимое не затенено, но простое перемещение будет гораздо проще поддерживать.

1 ответ

Решение

NFOP (последний выпуск в марте 2008 года) - это порт.NET Apache FOP (последний выпуск в июле 2010 года). Apache FOP никогда не поддерживал fo:float (см. http://xmlgraphics.apache.org/fop/compliance.html).

Таким образом, ответ на ваш вопрос: нет, fo: float, к сожалению, не поддерживается.

Другие вопросы по тегам