gpt4 book ai didi

c# - 在不打印文档的情况下获取打印页数

转载 作者:太空狗 更新时间:2023-10-29 20:10:05 27 4
gpt4 key购买 nike

这有点类似于关于 Is there a better way to get the page count from a PrintDocument than this? 的问题

但在我的例子中,我有一个带有格式化 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);
}

最佳答案

在 SO,坏消息总是传得很慢。您需要打消这种实用性的想法。

虽然问题中没有说明,但您现在应该已经知道您的 PrintPage 事件处理程序不起作用。它始终产生 1 的计数。那是因为您从未将 e.HasMorePages 属性设置为 true,该属性会导致生成多个页面。

可靠地将该属性设置为 true,您需要弄清楚浏览器布局引擎如何呈现 HTML。并弄清楚如何将它分解成不会将一行文本或图像分成两部分的页面。并找出与浏览器打印引擎执行此操作的完全相同的方式。许多程序员尝试过的壮举,没有人完成。浏览器的自动化对象模型只是没有所需的 api。

唯一合理的方法是您已经知道的方法。您必须 调用 ShowPrintPreviewDialog()。它很容易在预览对话框中显示页数,在 IE11 中看起来像这样:

enter image description here

如果您考虑从对话框中窥探该号码:不,那也行不通。该对话框不使用任何控件,它是一个整体窗口。

关于c# - 在不打印文档的情况下获取打印页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24627782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com