Использование летающей тарелки и docx4j в одном проекте

У меня есть проект, в котором я хочу иметь возможность форматировать документы xhtml как в формате PDF, так и в формате Docx.

Я использовал flyingsaucer для форматирования документов PDF в течение некоторого времени, и мне всегда приходилось использовать более старую версию iText для совместимости. Теперь, когда я использую docx4j, мне нужно обновить iText до более новой версии, иначе он не будет работать.

FlyingSaucer (xhtmlrenderer R8pre2) использует iText 2.0.8
docx4j 2.8.0 использует iText 2.1.7

Я могу использовать только одну библиотеку iText, но какую бы библиотеку я ни использовал, у меня возникают проблемы с совместимостью либо с летающей тарелкой, либо с docx4j.

На данный момент проблема сводится к одному конкретному методу (com.lowagie.text.pdf.BaseFont.getCharBBox) который в одной версии занимает char параметр, а в другом требуется int параметр.

Я думаю, что мне, возможно, придется скачать исходники для flyingsaucer или iText (я думаю, что они оба с открытым исходным кодом) и исправить это самостоятельно (не то, что я делал раньше, но я думаю, что смогу справиться), но я могу представить, что я не первый человек, который столкнется с этой проблемой, и, возможно, есть другой способ обойти ее, или кто-то другой уже разработал один из проектов для решения такого рода проблемы.

1 ответ

Решение

Раскрытие информации: работаю над проектом docx4j

docx4j 2.8.0 использует только iText, потому что это требуется нашим форком Flying Saucer, который выполняет импорт XHTML.

В этой ветке я добавил материал, связанный с docx, и удалил некоторые вещи, которые нам не нужны. Вполне возможно, что в будущем мы предложим это "Летающей тарелке" - это вопрос времени.

В то же время, для полноты, я упоминаю, что вы можете иметь настоящую Летающую тарелку и наш форк одновременно на вашем пути к классам, поскольку наш форк перепакован.

Возвращаясь к вашему вопросу, теперь FlyingSaucer имеет ту же зависимость 2.1.7, поэтому, если вы можете использовать текущие источники, это должно решить проблему, которую вы подняли.

Другие вопросы по тегам