Год или два назад мне приходилось генерировать pdf-файлы из программы на C ++ / C #. В конце я остановился на запуске Apache Java FOP в качестве отдельного процесса для преобразования. Опыт с xsl-fo не был приятным. В то время не было ни одного инструмента, который бы полностью реализовал xsl-fo. Инструменты имели тенденцию выбирать подмножество спецификации и взламывать это. Учитывая растущую сложность xsl-fo, я начинаю задаваться вопросом, будет ли когда-либо полная реализация.
FOP имел тенденцию к ошибкам, и значительное время было потрачено на решение проблем. XSLT и XPaths было трудно выучить. Прошло несколько недель, прежде чем я увидел прошлое за многословием и смог быстро добиться цели. Я не думаю, что я когда-либо вполне разбирался в 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 само по себе является болезненным миром (который может пригодиться tidy ). Далее, если какая-то бедная душа уже не создала FCKEditor xhtml -> xsl-fo xslt для вашей реализации xsl-fo, вам придется ее создать. Это включает в себя изучение xsl-fo, xslt и xpath. По моему опыту, это займет несколько недель и станет мощным решением.
Для начала работы с xsl-fo мне пригодились следующие ссылки:
Так что же это за xsl-fo, xslt и все остальное? XSL-FO: готов к прайм-тайм? выделяет его как:
Семейство расширяемых таблиц стилей (XSL) XSL - это семейство рекомендаций для определения преобразования и представления документов XML. Он состоит из трех частей:
- XSL Transformations (XSLT), язык для преобразования XML
- XML Path Language (XPath), язык выражений, используемый XSLT для доступа или ссылки на части документа XML. (XPath также используется в спецификации XML Linking)
- Объекты форматирования XSL (XSL-FO), словарь XML для определения семантики форматирования
Мой совет? Запустить. Найди другого подальше. Найдите другое решение. Создайте файлы LaTeX и конвертируйте их в PDF-файлы. Создайте что-то еще. Создайте текстовые документы и распечатайте их, используя PDFCreator . Генерация изображений. Управление Firefox для печати страниц в формате PDF. Найти прочь, чтобы избежать необходимости PDF-файлов вообще. Что угодно, пока оно не борется с html, xsl-fo, FOP, xslt и xpath.
PS: Дайте мне знать, если вам нужна помощь. : -)