我创建了这个方法来在我的窗口服务中打印html页面。
public async Task PrintHtmlPage(PrintPageEventArgs e, string _pcontents)
{
WebBrowser control = new WebBrowser();
control.Width = 710;
control.Height = 1010;
control.DocumentText = _pcontents;
while (control.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }
Bitmap bitmap = new Bitmap(710, 1010);
//Bitmap bitmap = new Bitmap(myBrowser.Width, myBrowser.Height);
for (int Xcount = 0; Xcount < bitmap.Width; Xcount++)
{
for (int Ycount = 0; Ycount < bitmap.Height; Ycount++)
{
bitmap.SetPixel(Xcount, Ycount, Color.Black);
}
}
control.DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height));
RectangleF printArea = new RectangleF(65, 10, 710, 1010);
e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
e.Graphics.DrawImage(bitmap, printArea);
control.Dispose();
}
我正在使用此
调用方法 try
{
var t = new Thread(() => PrintHtmlPage(e, _contents).ConfigureAwait(true));
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
}
catch (Exception ex)
{
//MessageBox.Show(ex.ToString());
throw ex;
}
问题: 有时打印空白页。