这有点类似于关于以下问题的问题:是否有比这更好的方法来从PrintDocument获取页数?
但就我而言,我有一个带有格式html的网络浏览器控件。目前,我有调用的选项,ShowPrintPreviewDialog()
因此用户可以看到要打印多少页。
无论如何,是否有要启动的页数,而无需启动PrintPreview
?
我正在尝试创建一种将OnTextChange
自动调用并显示打印页数的方法?
我有使用PrintPage
事件
private void PrintDocumentOnPrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString(this.webBrowser1.DocumentText, this.webBrowser1.Font, Brushes.Black, 10, 25);
}
坏消息总是如此缓慢。您需要重新设计实用的想法。
尽管问题中未说明,但您现在应该已经知道PrintPage事件处理程序不起作用。它总是产生1的计数。这是因为您从未将e.HasMorePages
属性设置为true,该属性导致生成多个页面。
为了可靠地将该属性设置为true,您需要弄清楚浏览器布局引擎如何呈现HTML。并弄清楚如何将其分解为不切成两行的页面,例如一行文本或一幅图像。并找出如何,这是在确切同样的方式,浏览器打印引擎做到这一点。许多程序员尝试过的壮举,却没有实现。浏览器的自动化对象模型只是没有所需的api。
唯一合理的方法是您已经知道的方法。您必须调用ShowPrintPreviewDialog()。可以在预览对话框中轻松显示页数,在IE11中如下所示:
如果您考虑从对话框中窥探该号码:不,那也不行。该对话框不使用任何控件,它是一个整体窗口。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句