WPF 打印功能全解析
1. 多页自定义打印
在进行打印操作时,如果想要实现多页打印,就需要使用 DocumentPaginator 类。与打印 FlowDocument 不同的是,这次需要从头开始创建 DocumentPaginator ,并且没有内部的私有 DocumentPaginator 来处理所有繁重的工作。
实现 DocumentPaginator 的基本设计并不复杂。需要添加一个方法将内容分割成页面,并在内部存储这些页面的信息。然后,只需响应 GetPage() 方法,为 PrintDialog 提供所需的页面即可。每个页面以 DrawingVisual 的形式生成,但 DrawingVisual 会被 DocumentPage 类包装。
然而,将内容分割成页面是比较棘手的部分。在 WPF 中并没有神奇的方法,需要自己决定如何分割内容。有些内容相对容易分割,例如长表格;而有些内容则更具挑战性,比如打印长篇文本时,需要逐字处理文本,将单词添加到行,再将行添加到页面,还需要测量每个文本片段是否适合该行。如果想要实现类似于 FlowDocument 的最佳拟合对齐方式,建议使用 PrintDialog.PrintDocument() 方法,因为这需要编写大量代码并使用一些非常专业的算法。
下面是一个
超级会员免费看
订阅专栏 解锁全文
259

被折叠的 条评论
为什么被折叠?



