我正在Visual Studio 2019中使用一个.net core restful应用程序,该应用程序返回要打印的图像的字节数组。我有HTML模板存储,需要转换为图像,所以我使用PdfSharpCore,主要是因为这是最好的,我可以找到,而不必购买库。我的问题是我发现的代码样本说它适用于PdfSharpCore,但它在样本中使用了XImage.FromGdiPlusImage,这在PdfSharpCore中不可用,只有在PdfSharp中,这在.net核心应用程序中应该不受支持。我花了一整天想把它编译出来。任何帮助将不胜感激。如果我错了,有一个更简单的方法来实现这一点,请随时分享。
public byte[] GetBitmapByteArrayFromHtmlString( String html )
{
byte[] data;
// Convert the HTML string to a PDF document
//HtmlToPdf converter = new HtmlToPdf();
// Create an XGraphics object from the first page of the PDF document
PdfDocument doc = PdfGenerator.GeneratePdf(html,PdfSharpCore.PageSize.A0,20,null,null,null);
PdfPage page = doc.Pages[0];
XGraphics gfx = XGraphics.FromPdfPage( doc.Pages[0] );
// Create an XImage object from the XGraphics object
int width = Convert.ToInt32(gfx.PdfPage.Width.ToString());
int height = Convert.ToInt32(gfx.PdfPage.Height.ToString());
XImage image = XImage.FromGdiPlusImage(new Bitmap(width, height));
// Create a bitmap image from the XImage object
Bitmap bitmap = new Bitmap( image.PixelWidth, image.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb );
bitmap.SetResolution( (float) image.HorizontalResolution, (float) image.VerticalResolution );
using( MemoryStream stream = new MemoryStream() )
{
bitmap.Save( stream, System.Drawing.Imaging.ImageFormat.Png );
data = stream.ToArray();
}
return data;
// Save the bitmap image to a file
//bitmap.Save("image.png", System.Drawing.Imaging.ImageFormat.Png);
} /* End GetBitmapByteArrayFromHtmlString */
1条答案
按热度按时间sczxawaw1#
如果你不能使用
XImage.FromGdiPlusImage
,那么一个解决方案是:1.将
Bitmap
保存到MemoryStream
(以核心构建的PDFsharp支持的格式)1.从该
MemoryStream
创建XImage
OTOH,如果您的代码使用GDI+中的
Bitmap
类,那么请考虑使用支持XImage.FromGdiPlusImage
的PDFsharp的GDI构建。但是,正如你所写的,这在Linux或Mac下的核心环境中不可用。