You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core RESTful API中Html转图片字节数组编译问题求助

问题说明

在Visual Studio 2019开发.NET Core RESTful应用,需求是将HTML模板转为图片字节数组用于打印。选用免费类库PdfSharpCore后,发现示例代码中的XImage.FromGdiPlusImage方法仅存在于不支持.NET Core的旧版PdfSharp中,PdfSharpCore无此方法,导致代码无法编译。

解决方案

方案1:基于PdfSharpCore + SkiaSharp实现PDF转图片

PdfSharpCore底层依赖SkiaSharp,可直接用SkiaSharp渲染PDF页面为Bitmap,替代原代码中缺失的XImage.FromGdiPlusImage逻辑。

修改后的代码

using PdfSharpCore.Pdf;
using SkiaSharp;
using System.IO;

public byte[] GetBitmapByteArrayFromHtmlString(string html)
{
    // 将HTML转为PDF文档
    using var doc = PdfGenerator.GeneratePdf(html, PdfSharpCore.PageSize.A0, 20, null, null, null);
    var page = doc.Pages[0];

    // 转换页面尺寸为Skia可用的像素单位(DPI设为96)
    const int dpi = 96;
    var width = (int)(page.Width.PointToPixel(dpi));
    var height = (int)(page.Height.PointToPixel(dpi));

    // 用SkiaSharp渲染PDF页面到Bitmap
    using var pdfStream = new MemoryStream();
    doc.Save(pdfStream);
    pdfStream.Position = 0;

    using var skPdf = SKDocument.Open(pdfStream);
    using var bitmap = new SKBitmap(width, height);
    using var canvas = new SKCanvas(bitmap);
    canvas.Clear(SKColors.White);

    if (skPdf.PageCount > 0)
    {
        var pageCanvas = skPdf.GetPage(0).Canvas;
        canvas.DrawPicture(pageCanvas.Picture);
    }

    // 将Bitmap转为PNG字节数组
    using var imageStream = new MemoryStream();
    bitmap.Encode(imageStream, SKEncodedImageFormat.Png, 100);
    return imageStream.ToArray();
}

依赖安装

需安装以下NuGet包:

  • PdfSharpCore
  • SkiaSharp
  • PdfSharpCore.Quality(包含HTML转PDF的PdfGenerator类)

方案2:直接HTML转图片(更简便)

若无需中间PDF转换步骤,可使用专门的HTML转图片类库,跳过PDF环节减少开销,例如HtmlToImage.NetCore:

示例代码

using HtmlToImage.NetCore;
using System.Drawing.Imaging;

public byte[] GetBitmapByteArrayFromHtmlString(string html)
{
    var converter = new HtmlConverter();
    // 对应A0尺寸(96DPI)的像素值,可按需调整
    var imageBytes = converter.FromHtmlString(html, 
        width: 1189, 
        height: 1684, 
        format: ImageFormat.Png);
    return imageBytes;
}

依赖安装

安装NuGet包:HtmlToImage.NetCore


内容的提问来源于stack exchange,提问作者Chris Varga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:35:24