WPF - 打印可视化内容时的分页问题

9

我有一个WPF窗口,并带有一个框架。我有一些代码,使用printdialog和printvisual打印框架的内容。但是,这只会打印出屏幕上显示的内容,即使框架滚动并且其他部分可用。

是否有一种方法可以添加分页,并确保打印整个框架的内容。

或者是否有另一种方法可以获取我的框架内容并打印它?比如不使用printvisual?

1个回答

14

是的,我已经做过这个了。 这不是很难。

  1. 将Frame放入一个ScrollViewer内,并在通常情况下禁用水平和垂直滚动

  2. 当你准备打印时,启用垂直滚动。 这将使Frame被告知它具有无限的垂直空间,因此它将呈现所有内容。然后调用UpdateLayout()以更新布局。

  3. 实现IDocumentPaginator以为每个页面返回相同的Frame,但每次调整剪辑和RenderTransform以显示实际Frame的不同部分。

  4. 使用自定义的IDocumentPaginator进行打印

以上描述假定您想要将框架宽度固定到页面宽度并在垂直方向上进行分页。 这适用于网页,但不适用于电子表格。 对于类似电子表格的内容,您将设置ScrollViewer允许两个方向滚动,使得框架在两个方向上都具有无限空间。 在这种情况下,IDocumentPaginator相同,只是选择RenderTransforms和裁剪以在水平和垂直方向上迭代。

这种技术实际上适用于任何WPF内容,而不仅仅是Frame。

另请参见
WPF可视化内容的分页打印


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接