HTML для строки RTF с использованием Python

Я ищу способ преобразования текста HTML в строку RTF. Есть ли библиотеки, которые выполняют эту работу. Я получаю html-контент динамически в своем проекте и нуждаюсь в его рендеринге в формате RTF. Я использую HTML-парсер для преобразования HTML-текста в обычную строку, а затем пытаюсь использовать PyRTF для преобразования в формат RTF. Есть ли лучший способ, которым это можно сделать. Спасибо заранее.

Ответ 1

RTF кажется конвертируемым форматом для конвертирования с/в. Я попытался разрезать и наклеивать среди приложений на Mac OS X, например, где RTF является чем-то вроде lingua franca. Некоторые из этих приложений - это приложения Microsoft (что связано с тем, что RTF - это формат, разработанный Microsoft), другие - нет. Даже базовая информация о форматировании, такая как размер шрифта, шрифт, интервал между линиями и стиль списка (упорядоченный или неупорядоченный), смешивается при копировании из одного якобы RTF-говорящего приложения в другое. Проще говоря, это беспорядок.

Я искал способы программного чтения, записи и преобразования RTF, предпочтительно из Python. Я нашел несколько пакетов на PyPI, их тестирование оказалось неутешительным. Они поддержали бы RTF 1.5, скажем, при текущей версии 1.9.1. RTF существует уже давно, но спецификация 2005 года не совсем новая. Было много ошибок и несовместимости. МНОГО.

Теперь я не говорю, что это невозможно, или что там нет других библиотек, которые могли бы сделать трюк. Например, я не пробовал zopyx.convert, упомянутый здесь другими. Может быть, это здорово. Но глядя на его зависимости - Java, FOP и т.д. - это выглядит довольно сложной (и, вероятно, хрупкой) toolchain. Я прочитал свой код в github, и Python действительно существует только в качестве координационного шпона. Он организует внешние инструменты XFC, XINC, FOP и PrinceXML - три из которых являются коммерческим программным обеспечением. Это включает ключевую часть XFC, которая имеет дело с RTF. Цвет меня скептически.

Есть два конвертера, которые я нашел, заслуживают внимания: если вы используете Mac, textutil командная строка программа на самом деле является одним из лучших и простых инструментов, которые я видел.

textutil -convert html filename.rtf -output filename.html

Другой механизм форматирования, который стоит рассмотреть, LibreOffice. Он бесплатный, с открытым исходным кодом, разумно поддающийся автоматизации и достойный фундамент в качестве центра взаимодействия. Это не просто догадка; Я создал сложные, многоформатные документооборота вокруг него.

Я бы поставил под вопрос, почему вы пытаетесь попасть в RTF. Это похоже на формат документа, с которым вы пытаетесь убежать. Но если вам нужно пойти туда, textutil и LibreOffice - это наименее худшие механизмы, которые я нашел.

Ответ 3

Я вижу, что этот вопрос старше года, но решил, что я буду вносить все равно. Недавно у меня было аналогичное требование, и я обратился к PyRTF, небольшому, но мощному модулю Python, который может создавать RTF-документы из текстового файла. Вы можете использовать Beautiful Soup, чтобы очистить HTML, спуститься по тегу дерева разбора по тегу и использовать PyRTF API для создания соответствующих объектов (таблицы, ячейка, параграф, раздел или документ).

Сам API достаточно подробен и позволяет создать целую кучу пользовательского форматирования (текст шрифта, выравнивание, цвет, заголовки, колонтитулы и т.д.).

Надеюсь, что это поможет.