#java #xml #xslt #pdf
#java #xml #xslt #PDF
Вопрос:
У меня следующая проблема: у меня есть XML-файл с таблицей стилей XSL, который отображает этот XML-файл в виде аккуратной таблицы в HTML, когда я загружаю его в веб-браузер. Теперь мне нужно создать PDF-файл, который выглядит ТОЧНО так же, как этот XML-файл в стиле XSL в веб-браузере, без необходимости создания пользовательских FO для каждого файла. Все должно быть сделано на Java.
Ответ №1:
Мне нужно создать PDF-файл, который выглядит ТОЧНО так же, как этот XML-файл в стиле XSL в веб-браузере
Подумайте еще раз об этом требовании. Разбитые на страницы носители, такие как PDF, и нестраничные носители, такие как HTML, могут выглядеть только «достаточно близко», но никогда не «в точности похожи» друг на друга. Это становится еще более очевидным, если учесть, что ваш HTML-код отображается на устройствах с разными размерами экрана.
Если вы немного смягчите вышеуказанное требование, вы, вероятно, согласитесь, что XSL-FO — лучший выбор. Вам определенно не нужно писать «пользовательские FO для каждого файла»: напишите XSLT только один раз и используйте его «на лету» для преобразования вашего XML в XSL-FO, а затем используйте механизм рендеринга для обработки XSL-FO в PDF. Просто.
Ответ №2:
XSL-FO действительно звучит как именно то, что вам нужно. Но если это не вариант, сначала явно выполните преобразование XSLT для XML в Java, а затем преобразуйте полученный HTML (который к тому времени будет строковым / байтовым массивом / DOM / как угодно) в PDF с использованием некоторой дополнительной библиотеки. Есть некоторые библиотеки, которые поддерживают преобразование HTML в PDF, например, iText. Преобразования XSLT в Java действительно просты. Там задействовано мало кода.
Комментарии:
1. Спасибо за ваш ответ. К сожалению, мне нужно решение, которое обходится без промежуточного этапа преобразования XML в HTML.
2. Если вы собираетесь делать это на Java, почему не может быть промежуточного шага? Вам все равно понадобится какое-то преобразование. Использование XSLT, XSL-FO или какого-либо конвертера HTML в PDF, безусловно, предпочтительнее написания кода, который превращает события синтаксического анализа непосредственно в конструкции PDF? Может быть что-то для прямого преобразования XML в PDF, но я не знаю ни одного такого инструмента / библиотеки, так что ваше предположение так же хорошо, как и мое. Надеюсь, у кого-то есть хорошие предложения.