Подтвердить что ты не робот

Преобразование Rtf в HTML

У нас есть хрустальный отчет, который нам нужно отправить как электронное письмо, но HTML, созданный из отчета Crystal, в значительной степени просто уродлив и вызывает проблемы с некоторыми почтовыми клиентами. Я хотел экспортировать его как богатый текст и преобразовать его в HTML, если это возможно.

Любые предложения?

4b9b3361

Ответ 1

Я бы посмотрел этот инструмент на CodeProject RTFConverter. Этот парень дает отличную информацию о том, как работает программа вместе с деталями преобразования.

Написание собственного RTF-конвертера

Ответ 3

Существует также образец в галерее образцов кода MSDN под названием Преобразование между RTF и HTML, что позволяет вам конвертировать между HTML, RTF и XAML.

Ответ 4

Если вы не против того, чтобы ваши руки были грязными, писать конвертер RTF в HTML не так сложно.

Написание конверта RTF- > HTML общего назначения было бы несколько сложным, потому что вам нужно было иметь дело с сотнями RTF-глаголов. Однако в вашем случае вы имеете дело только с теми глаголами, которые специально используются Crystal Reports. Бьюсь об заклад, стандартное RTF-кодирование, генерируемое Crystal, не сильно отличается от отчета к отчету.

Я написал RTF в HTML-конвертер в С++, но он касается только базового форматирования, такого как шрифты, выравнивание абзацев и т.д. Мой переводчик в основном выделяет любое специализированное форматирование, с которым он не готов справиться. Это заняло около 400 строк С++. Он в основном сканирует текст для тегов RTF и заменяет их эквивалентными тегами HTML. Теги RTF, которые не входят в мой список, просто удаляются. Функция regex действительно полезна при написании такого конвертера.

Ответ 5

ОБНОВЛЕНО:

Я вернулся домой и попробовал код ниже, и он не работает. Для любого, кто задается вопросом, буфер обмена не просто волшебным образом конвертирует вещи, как я надеялся. Скорее, он позволяет приложению сортировать "выгружать" объект данных с различными форматами вставки, а затем вы вставляете (который в моей метафоре будет "загружать" ) вставляемая программа указывает на предпочтительный формат. Я лично закончил использование этого кода, который был рекомендован ранее, и он был чрезвычайно прост в использовании и очень эффективен. После того, как вы импортировали код (в VStudio, Project → Добавить существующие файлы), вы просто отправляете html в rtf следующим образом:

return HtmlToRtfConverter.ConvertHtmlToRtf(myRtfString);

или в противоположном направлении:

return RtfToHtmlConverter.ConvertHtmlToRtf(myHtmlString);

(ниже мой предыдущий неверный ответ, если кто-то интересуется хронологией этого ответа haha)

Большинство, если не все из вышеперечисленных ответов, предоставляют исчерпывающие, часто основанные на библиотеке решения проблемы. Я прочь от своего компьютера и, таким образом, не могу проверить эту идею, но один альтернативный, дешевый и неопределенный метод hack-y будет следующим.

private string HTMLFromRtf(string rtfString)
{
            Clipboard.SetData(DataFormats.Rtf, rtfString);
            return Clipboard.GetData(DataFormats.Html);         
}

Опять же, не совсем уверен, что это сработает, но просто возиться с некоторыми html на моем iPhone, я подозреваю, что так будет. Документация здесь. Более подробное объяснение /docs RE: получение и настройка моделей данных в буфере обмена можно найти здесь.

(Да, я полностью осознаю, что я здесь несколько лет спустя, но я предполагаю, что этот вопрос - это тот, который некоторые люди все еще хотят получить).

Ответ 6

Я не знаю о каких-либо библиотеках, чтобы сделать это (но я уверен, что есть много, что может), но если вы уже можете создать HTML из отчета Crystal, почему бы не использовать XSLT для очистки разметки?

Ответ 7

Я думаю, вы можете загрузить его в объект документа Word, используя поддержку программирования .NET Office и инструменты Visual Studio для офиса.

И затем используйте экземпляр документа для повторного сохранения в виде HTML-документа.

Я не уверен, как, но я считаю, что это возможно полностью в .NET без какой-либо сторонней библиотеки.

Ответ 8

Вы можете попробовать загрузить его в Google Документы и загрузить его как HTML.