首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >原始HTML -如何在服务器上测量宽/高?

原始HTML -如何在服务器上测量宽/高?
EN

Stack Overflow用户
提问于 2009-10-06 21:55:22
回答 3查看 1.3K关注 0票数 1

我有一个网络应用程序,让用户上传整个.html文件到我的服务器。我希望“检测”上传的html的宽度/高度,并将其存储在我的数据库中。

到目前为止,我已经尝试使用System.Windows.Forms.WebBrowser控件,但没有成功-通过将文件读入字符串,将其加载到browser.document中:

 _browser = new WebBrowser();
 _browser.Navigate("about:Blank");
 _browser.Document.OpenNew(true);
 _browser.Document.Write(html);

检查_browser对象的各种属性(文档、窗口等)似乎总是默认大小为250x250。

我尝试过在.html文件中声明不同的css大小,但仍然是一样的。

  • 是检查html字符串和正则表达式是否与CSS属性匹配的唯一选项?
  • 如何可靠地确定相关文档的呈现宽度/高度?

记住,.html文件可能包含也可能不包含css属性。也许用户使用的是旧的、不推荐使用的标记,比如

<body width="500">

vs

<style>
 body{ width: 400px; }
<body>

等。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-06 22:14:02

正如您已经发现的,您将无法使用WebBrowser控件,因为报告的高度和宽度是控件本身的高度和宽度,而不是控件内部的文档。

你真正需要做的是编写你自己的HTML解析引擎来自己计算出来。你需要计算出所有的线,计算出线的高度,等等。

这样的努力真的值得吗?你需要做很多假设,这样的计算几乎毫无价值……不同浏览器的渲染差异,将其文本大小设置为非默认大小的客户,以及可能数十个其他用户。即使是屏幕分辨率也很重要,因为正如您在本段中所看到的,文本往往会换行。您需要计算文本的换行位置,以便计算将显示多少行文本。你需要考虑字体大小...

所有这些都表明,理论上这应该是可行的,并且计算所有这些的机制将是您用于打印到打印机的相同概念。手动打印时,计算页面高度并确定您在页面上的位置都是标准操作程序。

这里有一篇文章解释了基础知识。这将由您来决定是否值得付出这些努力。

http://msdn.microsoft.com/en-us/magazine/cc188767.aspx

票数 1
EN

Stack Overflow用户

发布于 2009-10-06 22:10:54

即使您可以通过检查CSS和/或HTML标记规范来捕获声明的宽度,也不太可能获得呈现的宽度。高度会更糟,因为文本会自动换行。

我认为你可能想要考虑一种不同的方法。你真的需要这个吗?你想满足什么要求?可以用一种不同的方式来完成吗?

票数 2
EN

Stack Overflow用户

发布于 2009-10-06 22:09:24

您将无法使用正则表达式找到维度-请记住,可能没有任何维度,在这种情况下,您必须手动测量文档中的元素,这需要一个完整的HTML渲染器。

使用Interhet Explorer执行此操作会引起安全问题;请确保IE始终在您的服务器上保持最新,并确保其在ASP .Net帐户中的安全设置尽可能严格。(我不确定该怎么做)

试试_browser.Document.Body.OffsetRectangle.Size

EDIT:请注意,正如其他人所指出的,由于文本换行等原因,高度也将取决于宽度,因此您应该将IE控件的宽度设置为合适的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1528309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档