C#将html转换为图像

发布于 2025-01-25 20:29:01 字数 2272 浏览 2 评论 0原文

我正在尝试使用位图将HTML字符串转换为图像。我将其转换,但是它非常像素化,质量低。我使用的代码如下。

string pdfDest = HttpContext.Current.Server.MapPath("~/serverFiles/caratula.pdf");
var tabla = "<!DOCTYPE html><body><table id =\"caratula\" class=\"tabla-caja mb-4\" summary=\"Justificante\" style=\"border: 1px solid #aeccd3; float: right; color: #394146; font-family: 'Roboto'; font-size: 0.9em; padding: -2px;\"> <tbody> <tr><td style=\"padding: 5px 10px; text-align: right; border-right: 1px solid #aeccd3;border-color: #aeccd3; background-color: #FFFFFF\" scope=\"col\">21 Zabalgunea Bulegoa<br> <span id=\"tipoDocEU\">SARRERA</span></td> <td class=\"text-start light\" style=\"padding: 5px 10px; background-color: #FFFFFF\" scope=\"col\">Oficina Ensanche 21<br> <span id=\"tipoDocES\">ENTRADA</span></td> </tr></tbody> <tfoot> <tr><td scope=\"col\" colspan=\"2\" style=\"border-top: 1px solid #aeccd3; text-align: center; padding: 5px 10px; margin-top: -2px; background-color: #FFFFFF\"><span id=\"cabecera\" style=\"padding-right: 0.5em; padding-left: 0.5em; text-transform: uppercase;\">02/05/2022 12:41 - 2022RPE00000168</span></td></tr></tfoot> </table></body></html>";


using (var ms = new MemoryStream(10 * 1024))
using (var reader = new PdfReader(file))
using (var stamper = new PdfStamper(reader, ms))
{
    int numberOfPages = reader.NumberOfPages;
    string caratula = HttpContext.Current.Server.MapPath("~/serverFiles/caratula.png");
    var ps = reader.GetPageSizeWithRotation(1); /*dc.PdfDocument.PageSize is not always correct*/
    var x = ps.Right - 270;
    var y = ps.Top - 105;
    System.Drawing.Bitmap m_Bitmap = new System.Drawing.Bitmap(355, 110);
    System.Drawing.PointF point = new System.Drawing.PointF(10, 10);
    System.Drawing.SizeF maxSize = new System.Drawing.SizeF(355, 110);
    TheArtOfDev.HtmlRenderer.WinForms.HtmlRender.RenderGdiPlus(System.Drawing.Graphics.FromImage(m_Bitmap),
        tabla.Replace("\"", "\'"),
        point, maxSize);
    m_Bitmap.SetResolution(355, 110);
    m_Bitmap.Save(caratula, System.Drawing.Imaging.ImageFormat.Png);
}

什么问题或如何解决我的问题? 谢谢

I am trying to convert a HTML string to an image using bitmap. I convert it, but it is very pixelated, with low quality. The code I'm using is the following.

string pdfDest = HttpContext.Current.Server.MapPath("~/serverFiles/caratula.pdf");
var tabla = "<!DOCTYPE html><body><table id =\"caratula\" class=\"tabla-caja mb-4\" summary=\"Justificante\" style=\"border: 1px solid #aeccd3; float: right; color: #394146; font-family: 'Roboto'; font-size: 0.9em; padding: -2px;\"> <tbody> <tr><td style=\"padding: 5px 10px; text-align: right; border-right: 1px solid #aeccd3;border-color: #aeccd3; background-color: #FFFFFF\" scope=\"col\">21 Zabalgunea Bulegoa<br> <span id=\"tipoDocEU\">SARRERA</span></td> <td class=\"text-start light\" style=\"padding: 5px 10px; background-color: #FFFFFF\" scope=\"col\">Oficina Ensanche 21<br> <span id=\"tipoDocES\">ENTRADA</span></td> </tr></tbody> <tfoot> <tr><td scope=\"col\" colspan=\"2\" style=\"border-top: 1px solid #aeccd3; text-align: center; padding: 5px 10px; margin-top: -2px; background-color: #FFFFFF\"><span id=\"cabecera\" style=\"padding-right: 0.5em; padding-left: 0.5em; text-transform: uppercase;\">02/05/2022 12:41 - 2022RPE00000168</span></td></tr></tfoot> </table></body></html>";


using (var ms = new MemoryStream(10 * 1024))
using (var reader = new PdfReader(file))
using (var stamper = new PdfStamper(reader, ms))
{
    int numberOfPages = reader.NumberOfPages;
    string caratula = HttpContext.Current.Server.MapPath("~/serverFiles/caratula.png");
    var ps = reader.GetPageSizeWithRotation(1); /*dc.PdfDocument.PageSize is not always correct*/
    var x = ps.Right - 270;
    var y = ps.Top - 105;
    System.Drawing.Bitmap m_Bitmap = new System.Drawing.Bitmap(355, 110);
    System.Drawing.PointF point = new System.Drawing.PointF(10, 10);
    System.Drawing.SizeF maxSize = new System.Drawing.SizeF(355, 110);
    TheArtOfDev.HtmlRenderer.WinForms.HtmlRender.RenderGdiPlus(System.Drawing.Graphics.FromImage(m_Bitmap),
        tabla.Replace("\"", "\'"),
        point, maxSize);
    m_Bitmap.SetResolution(355, 110);
    m_Bitmap.Save(caratula, System.Drawing.Imaging.ImageFormat.Png);
}

What is wrong or how can I solve my problem?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文