【问题标题】:C# - Know the height of HTML content in a console applicationC# - 了解控制台应用程序中 HTML 内容的高度
【发布时间】:2019-03-02 03:10:02
【问题描述】:

我有类似的 HTML 代码 -

<html>
<body>
<table><tr><td><h1>Heading</h1></td></tr></table>
</body>
</html>

在一个特定的需求中,我需要提前知道这个 HTML 全屏显示需要多少高度。这样我就可以保留专门为该内容计算的那么多空间。

我的想法是在 WebBrowser 控件中渲染这段代码,然后取高度。

        this.webBrowser1.Url = new Uri(htmlFilePath);
        //The below code will force the webbrowser control to load the HTML in it.
        while (this.webBrowser1.Document.Body == null)
        {
            Application.DoEvents();
        }
        int height = this.webBrowser1.Document.Body.ScrollRectangle.Height;

但在控制台应用程序中,我无法使用 WebBrowser 控件。有没有其他方法可以做到这一点?

【问题讨论】:

  • 您可以查看Headless Browsers,但我不知道如何从他们那里获取布局信息。
  • 我不认为你可以用 c# 做到这一点,因为它是服务器端并在渲染完成之前运行 - 如果你需要它,那么你可能不得不在文档完成后将它 ajax渲染
  • 可以在控制台应用程序中使用WebBrowser 控件。见stackoverflow.com/questions/6324810/…
  • 无头工作非常好。只需将页面高度和宽度设置为合理的数字,加载内容,等待 DOM 完成,然后读取正文高度。
  • @BradleyUffner 哇,非常感谢。它完美地工作。

标签: c# html web


【解决方案1】:

回答我自己的问题 -

我需要做的就是在我的控制台应用程序中添加System.Windows.Forms 的引用。 之后,我可以直接以无头形式使用 WebBrowser,而无需创建任何表单元素。

使用WebBrowser后,我设置了合理数字的高度/宽度。像下面这样 -

WebBrowser wb = new WebBrowser();
//Setting the page height and width to a reasonable number. So that whatever the content loaded in it gets aligned properly.
//For me 3000 works fine for my requirements.
wb.Width = 3000; 
wb.Height = 3000;

wb.Url = new Uri(htmlFilePath);
//the below code will force the webbrowser control to load the html in it.
while (wb.Document.Body == null)
{
    Application.DoEvents();
}
int height = wb.Document.Body.ScrollRectangle.Height;

【讨论】:

    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2012-06-20
    相关资源
    最近更新 更多