c# - 强制 NReco.ImageGenerator 下载特定版本的 wkhtmltoimage.exe
问题描述
我正在使用 NReco.ImageGenerator.dll v1.1.3。这个组件很好用,但是它下载的是wkhtmltoimage.exe v0.12.4,我需要v0.12.5代替。
如何强制它下载 v0.12.5?
解决方案
我使用以下代码解决了我的问题(从 HTML 创建图像):
public static void CreateImageFromHTML(string sourceHtml, string imageFileName, int width, int height)
{
var th = new Thread(() =>
{
var webBrowser = new WebBrowser();
webBrowser.Width = width;
webBrowser.Height = height;
webBrowser.ScrollBarsEnabled = false;
webBrowser.DocumentCompleted += delegate (object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser_DocumentCompleted(sender, e, imageFileName);
};
webBrowser.DocumentText = sourceHtml;
Application.Run();
webBrowser = null;
GC.Collect();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
th.Join(4000);
}
static void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e, string fileName)
{
var webBrowser = (WebBrowser)sender;
webBrowser.Dock = DockStyle.Fill;
int height = webBrowser.Document.Body.ScrollRectangle.Height;
int width= webBrowser.Document.Body.ScrollRectangle.Width;
using (Bitmap bitmap = new Bitmap(width, height))
{
webBrowser.DrawToBitmap(bitmap, new Rectangle(0, 0, width, height));
bitmap.Save(fileName, ImageFormat.Jpeg);
}
}
推荐阅读
- javascript - Javascript从嵌套结构创建一个新数组
- django - 如何找到相关表中日期时间字段之间的平均差异?
- javascript - 协议指定 void 参数类型时未调用 gRPC node-js 方法
- python - CPython 在执行标记扫描算法后如何知道哪些对象没有被标记?
- flutter - 如何在颤动中删除选项卡之间的额外空间?
- swift - 如何防止 NSToolbar 重叠 NSViewController 内容?
- botframework - Teams 客户端更新 - 访问此应用时出现问题
- google-sheets - Google 文档遇到错误。请尝试重新加载此页面,或在几分钟后返回此页面
- sql - Oracle plsql检查两侧之间的日期
- google-cloud-platform - 运行terraform申请GCP时连接被拒绝