Преобразование HTML или PDF в RTF / DOC или HTML / PDF в изображение с помощью DevExpress или Infragistics - PullRequest
3 голосов
/ 02 июля 2010

Есть ли способ конвертировать HTML или PDF в RTF / DOC или HTML / PDF в изображение, используя DevExpress или Infragistics?

Я пробовал это с помощью DevExpress:

string html = new StreamReader(Server.MapPath(@".\teste.htm")).ReadToEnd();

            RichEditControl richEditControl = new RichEditControl();
            string rtf;
            try
            {
                richEditControl.HtmlText = html;
                rtf = richEditControl.RtfText;
            }
            finally
            {
                richEditControl.Dispose();
            }

            StreamWriter sw = new StreamWriter(@"D:\teste.rtf");
            sw.Write(rtf);
            sw.Close();

Но яиметь сложный HTML-контент (таблицы, фоны, CSS и т. д.), и конечный результат не очень хороший ...

Ответы [ 2 ]

3 голосов
/ 05 июля 2010

Для преобразования содержимого HTML в изображение или PDF вы можете использовать следующий код:

using (RichEditControl richEditControl = new RichEditControl()) {
    richEditControl.LoadDocument(Server.MapPath(@".\teste.htm"), DocumentFormat.Html);
    using (PrintingSystem ps = new PrintingSystem()) {
        PrintableComponentLink pcl = new PrintableComponentLink(ps);
        pcl.Component = richEditControl;
        pcl.CreateDocument();
        //pcl.PrintingSystem.ExportToPdf("teste.pdf");
        pcl.PrintingSystem.ExportToImage("teste.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
    }
}
2 голосов
/ 04 июля 2010

Я предлагаю вам использовать последнюю версию DevExpress (на этот раз версию 10.1.5).Он обрабатывает таблицы намного лучше, чем предыдущие.

Пожалуйста, используйте следующий код, чтобы избежать проблем с кодировкой (StreamReader и StreamWriter в вашем примере всегда используют кодировку Encoding.UTF8, это повредит любой контент, сохраненный с другой кодировкой):

    using (RichEditControl richEditControl = new RichEditControl()) {
        richEditControl.LoadDocument(Server.MapPath(@".\teste.htm"), DocumentFormat.Html);
        richEditControl.SaveDocument(@"D:\teste.rtf", DocumentFormat.Rtf);
    }

Также обратите внимание на свойства richEditControl.Options.Import.Html и richEditControl.Options.Export.Rtf, в некоторых случаях вы можете найти их полезными.

...