C # PDFsharp вывод текста в формате RTF - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть данные в SQL, которые находятся в RTF, так как они содержат много символов верхнего индекса.Я пытаюсь распечатать данные в PDF-файле, используя PDFsharp (не MigraDoc), используя DrawString, однако, как я и ожидал, он просто показывает строку RTF ...

Я попытался поместить ее в RichTextBox и затем получитьсвойство Text, которое дает правильный простой текст, но не в надстрочном формате, который мне нужен.

Может кто-нибудь сказать мне, как правильно выводить данные RTF?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

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

Я бы, вероятно, использовал MigraDoc, чтобы мне не приходилось иметь дело сразрывы строк в моем коде, но это зависит от вас.Я бы не стал создавать растровые изображения для текста, поскольку это лишает преимущества формата PDF.

0 голосов
/ 22 февраля 2019

Первый из FAQ из pdfsharp:

Можно ли использовать PDFsharp для преобразования HTML или RTF в PDF?

Нет,не "из коробки", и мы не планируем писать такой конвертер в ближайшем будущем.

Да, PDFsharp с дополнительным кодом может это сделать.Но мы не предоставляем этот дополнительный код.В NuGet и других источниках вы можете найти стороннюю библиотеку «HTML Renderer для PDF с использованием PdfSharp», которая преобразует HTML в PDF.И могут быть другие библиотеки для тех же или аналогичных целей тоже.Может быть, они работают для вас, может быть, они помогают вам начать.

Обходной путь, я думаю, использует DrawToBitmap с RichTextBox для рендеринга строки RTF в изображение,затем используйте DrawImage, чтобы поместить его в файл PDF.

...