Как использовать поплавки с 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, к сожалению, не поддерживается.