Как использовать поплавки с XSL-FO в C # (NFop)? - PullRequest
0 голосов
/ 07 января 2011

Вопрос: Поддерживает ли 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 Ответ

3 голосов
/ 11 января 2011

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

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

...