【问题标题】:Printing in WPF在 WPF 中打印
【发布时间】:2023-03-17 15:53:02
【问题描述】:

我知道如何调用打印对话框并做其他事情。我的问题是:打印 WPF 页面的最佳做法是什么。

  1. 调用另一个页面 边距、格式和布局有效 出去。然后在上面调用 print

  2. 调用用户控件 边距、格式和布局有效 出去。然后在上面调用 print

  3. 调用一个包含所有 边距、格式和布局有效 出去。然后在上面调用 print

  4. 或任何其他首选方式 这样做。

请告诉我您是如何处理印刷的?

【问题讨论】:

    标签: c# wpf printing


    【解决方案1】:

    在 WPF 中,您有许多打印选项。哪个最适合的问题取决于 IMO 的打印内容和所需的质量。

    印刷视觉
    如果您想打印与 UI 中的表示完全一样的东西,那么您可以尝试直接打印构建您的打印内容的根内容的视觉效果。如果您有定位问题并且必须更正此视觉对象的属性,我建议创建它的内存副本,转换副本,然后打印出此副本。打印出视觉效果在 IMO 有许多缺点。除了简短的技巧和迷你工具外,我很少使用它。如果我使用,我主要必须创建提到的不可见副本并打印出来。如果您这样做,请注意您必须从代码中调用 Measure 和 Arrange

    打印 FlowDocument
    另一种可能性是打印出 FlowDocument。如果您有适合FlowDocuments 的内容,我发现这是一种创建精美内容以打印出来的简单方法。大多数情况下,如果您有一些简单的报告,请列出一些图像,这种方式是一种不错的方式。打印质量很好,只要您不想覆盖行为,许多复杂的操作就会自动为您完成,这也是可能的。这种打印输出的质量在 IMO 非常好。

    XPS 打印
    悬停如果您有复杂的内容并且希望它很好地打印出来,则必须构建 XPS 内容并将其打印在 XPS Print Path 上。这样,您拥有所有可能性和选择,质量非常好,但您要做的工作最多。我不太喜欢它,但主要是我打印的方式。

    我认为,您的问题主要与第一个块有关,但是我认为如果打印视觉效果还不够(对我来说很少足够),那么看看您有哪些选项可能会有所帮助。希望这能回答你的问题。

    【讨论】:

    • 现在我正在以这种方式打印: 我正在创建一个 width="800" 和 Height="1300" 的页面(根据打印机页面)根据打印要求具有所有边距和布局....然后我为页面调用 PrintVisual.... 我想更好的方法是使用 XPS 和 IMO,对吗??
    • @HCL:技术上更好的解决方案不一定是最好的解决方案。这取决于客户想要什么以及客户愿意为此付出什么。如果结果看起来必须如此,为什么要制定更复杂的解决方案?同样重要的是您对结果感到满意。如果不是为了客户,为什么不投资 XPS。但是我必须承认,印刷并不是我钟爱的话题。我还没有看到任何我喜欢的打印平台。但这是我个人的感觉,也许有人更喜欢编写打印代码而不是创建漂亮的 GUI 或酷的数据层 :)
    • @Pankaj Upadhyay:不,不需要创建文件。该文档可能有点令人困惑,因为它是一个广泛的主题。我已经快速搜索了一个操作方法:nbdtech.com/Blog/archive/2009/04/20/… 如果您搜索 [WPF 打印固定文档],您会发现更多信息
    • @HCL :谢谢.....其实我正在同时阅读msdn文档,一本关于wpf的书和在线示例,所以误读了很多......将通过详细了解所有可用选项的主题... :-)
    • @HCL "打印出视觉效果在 IMO 有很多缺点" 你有关于这个主题的链接或者你能进一步详细说明吗?我正在考虑打印视觉效果,因为我在使用 FlowDocuments 时发现了很多关于外观和样式的障碍。
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多