WPF - 打印视觉分页时

问题描述 投票:6回答:1

我有一个框架WPF窗口。我有一些代码打印出来打印使用PrintDialog和printvisual帧的内容。但是,这将只打印即使框架卷轴和其他部分都可以在屏幕上显示的内容。

有没有一种方法来添加分页,并确保我的框架的全部内容将打印。

还是有另一种方式把我的框架内容,并打印出来?即不使用printvisual?

wpf printing frames
1个回答
14
投票

是。我已经做到了这一点。这是不是很困难。

  1. 紧裹的ScrollViewer通常已禁用其水平和垂直滚动里面你的框架
  2. 当你准备打印,使得垂直滚动。这将导致帧被告知它有无限的垂直空间,所以它会呈现的所有内容。然后调用UpdateLayout请()来获取布局更新。
  3. 实施IDocumentPaginator返回相同的帧的每一页,但调整剪辑和的RenderTransform每次显示实际帧的不同部分。
  4. 打印使用自定义IDocumentPaginator

上面的描述假定你要修复的框架页面宽度的宽度和垂直分页它。这将是适当的网页而不是一个电子表格。对于类似电子表格的内容,你会设置的ScrollViewer允许滚动在两个方向上,给帧的无限空间,每程。在这种情况下是IDocumentPaginator除了RenderTransforms相同,削波被选择为水平和垂直迭代。

这种技术实际上适用于任何WPF内容,不只是一个框架。

也可以看看 Paginated Printing of WPF Visuals

© www.soinside.com 2019 - 2024. All rights reserved.