Год или два назад мне пришлось генерировать PDF-файлы из программы на C++/C#. В конце концов я решил запустить Apache Java FOP как отдельный процесс для преобразования. Опыт работы с xsl-fo был не из приятных. В то время казалось, что не существует ни одного инструмента, полностью реализующего xsl-fo. Инструменты, как правило, выбирают подмножество спецификации и взламывают его. Учитывая расползающуюся сложность xsl-fo, я начинаю задаваться вопросом, будет ли когда-нибудь полная реализация.
FOP, как правило, содержал ошибки, и на решение проблем уходило много времени. XSLT и XPath было трудно освоить. Потребовалось несколько недель, прежде чем я перестал обращать внимание на многословие и смог быстро добиться цели. Я не думаю, что когда-либо полностью разбирался в xsl-fo. Это делает модель html и css похожей на детскую игрушку. К счастью, PDF-файлы генерируются и не вызывают особых проблем. :-)
В любом случае, стоящая задача: создание pdf-файлов из xhtml-вывода из FCKEditor.
Я просто не могу найти библиотеку, которая будет конвертировать из HTML во что-нибудь дружественное к XSL.
Хе. Да, потому что его нет и, вероятно, не будет конвертера html в xsl-fo, который был бы полезен. У такого конвертера есть несколько недостатков: сложность браузеров и сложность xsl-fo. Чтобы такой конвертер мог работать со средним html-документом, ему нужны кишки веб-браузера: макет, поддержка css, возможно, даже JavaScript. Затем он должен взять отрендеренную страницу и выяснить, что нужно xsl-fo, чтобы получить что-то похожее и вписывающееся в ограничения xsl-fo.
Это похоже на проблему с созданием программы для просмотра слов: без повторной реализации большого количества слов в большинстве случаев это отстой, потому что выглядит иначе.
Так что ты можешь сделать? Что ж, иметь небольшое подмножество html для работы — хорошее начало. Будем надеяться, что вывод FCKEditor будет xhtml, поскольку преобразование html в xml само по себе является миром боли (что аккуратно может пригодиться). Далее, если какой-то бедняга уже не сделал FCKEditor xhtml -> xsl-fo xslt для вашей реализации xsl-fo, вам придется его сделать. Это включает в себя изучение xsl-fo, xslt и xpath. По моему опыту, это займет несколько недель и будет готовым решением.
Для начала работы с xsl-fo мне пригодились следующие ссылки:
Так что же это за xsl-fo, xslt и все такое прочее? XSL-FO: готовы к прайм-тайму? изложены следующим образом:
Семейство расширяемых языков таблиц стилей (XSL) XSL — это семейство рекомендаций по определению преобразования и представления XML-документов. Он состоит из трех частей:
- Преобразования XSL (XSLT), язык для преобразования XML
- XML Path Language (XPath) — язык выражений, используемый XSLT для доступа к частям XML-документа или обращения к ним. (XPath также используется спецификацией XML Linking)
- Объекты форматирования XSL (XSL-FO), словарь XML для определения семантики форматирования.
Мой совет? Бегать. Найдите другого подальше. Найдите другое решение. Создавайте файлы LaTeX и конвертируйте их в pdf. Сгенерируйте что-нибудь еще. Создавайте документы Word и распечатывайте их с помощью PDFCreator. Создавайте изображения. Управляйте Firefox для печати страниц в формате PDF. Найдите подальше, чтобы вообще не нуждаться в pdf-файлах. Что угодно, лишь бы не боролись с html, xsl-fo, FOP, xslt и xpath.
PS: Дайте мне знать, если вам нужна помощь. :-)
person
Jonathan Wright
schedule
17.10.2008