Как я могу ограничить в xsl-fo печать максимум на 10 страницах для PDF документа? - PullRequest
1 голос
/ 31 мая 2019

Я использую apache FOP для экспорта данных в pdf-файлы. Каждый раз, когда я пытаюсь экспортировать большие таблицы (более 4000 строк), я получаю "outOfMemoryError". Мой вопрос - как я могу установить ограничение в xsl-fo для печати максимум 10 страниц в одном документе PDF?

1 Ответ

0 голосов
/ 31 мая 2019

Как правило, вы не можете.

Способ, которым указан XSL, не может ограничивать количество страниц.Существует свойство force-page-count (см. https://www.w3.org/TR/xsl11/#force-page-count), но это для принудительного завершения fo:page-sequence на нечетной или четной странице, а не для принудительного задания определенного количества страниц. Вы можете попробовать установить fo:page-sequence-master(см. https://www.w3.org/TR/xsl11/#fo_page-sequence-master), чтобы исчерпать альтернативы после определенного количества страниц, но вы, вероятно, обнаружите, что средство форматирования будет восстанавливаться после ошибки (как это разрешено делать), продолжая повторно использовать последний-используемый мастер страниц.

Рекомендация FOP об использовании памяти находится на https://xmlgraphics.apache.org/fop/2.3/running.html#memory

Можете ли вы (как говорится в рекомендации FOP) разбить ваши таблицы на несколько fo:page-sequence? FOP склонен кОсвободите часть памяти после того, как закончите с последовательностью страниц.

Вы можете попробовать использовать другой форматер. Он может работать лучше в ваших таблицах, он может иметь двухпроходную обработку (наиболее полезно, когда есть много прямых ссылок), или он может иметь опцию форматирования только ограниченного числа страниц. Например, AH Formatter может выполнять двухпроходное форматирование и может выводить только страницы между указанным start и end страниц (см. https://www.antennahouse.com/product/ahf66/ahf-xslcmd.html),, и XEP может выводить первые n страниц для вывода SVG и XHTML (см. http://www.renderx.com/reference.html#Generate_Each_Page_as_separate_file).

...