【问题标题】:UWP - Print multiple xaml sheets using a single print commandUWP - 使用单个打印命令打印多个 xaml 表
【发布时间】:2019-12-24 19:22:34
【问题描述】:

有没有办法完成上述操作。

【问题讨论】:

    标签: xaml printing uwp


    【解决方案1】:

    Windows Community Toolkit中有一个PrintHelper对象,你只需要实例化PrintHelper对象并调用AddFrameworkElementToPrint方法添加多个要打印的 XAML 控件。

    此外,当您初始化对象时,您需要传递将用于承载可打印控件的 XAML 面板。它需要在您的视觉树中,但可以使用 Opacity = 0 隐藏,如下所示。更多详情可以参考这个document

    MainPage.xaml:

    <StackPanel>
        <Canvas x:Name="PrintCanvas" Opacity="0"/>
        <Button Click="Button_Click">click</Button>
    </StackPanel>
    

    .cs:

    private async void Button_Click(object sender, RoutedEventArgs e)
    {
        var printHelper = new PrintHelper(PrintCanvas);
        printHelper.AddFrameworkElementToPrint(new BlankPage1());
        printHelper.AddFrameworkElementToPrint(new BlankPage2());
        await printHelper.ShowPrintUIAsync("Title");
    }
    

    【讨论】:

    • 谢谢。如果我需要打印位于子网格中的页面的一部分,我该如何修改上面的代码。
    • 文档中提到控件不能链接到可视化树。这意味着他们的父母必须为空。如果您想打印子网格,您可以在发送打印之前断开它,或者您可以从头开始创建一个新的。如果不想使用上面的方法,需要手动实现打印过程,不使用上面的Toolkit,我创建了一个简单的sample,可以查看。更多详情可以参考这个document关于打印。
    • @Faywang-MSFT 我使用了您来自 GigHub 的样本,效果很好。但是,当应用程序有WebView 控件并在其中显示网页时,我们怎么能这样做呢?
    • @nam 你可以用WebViewBrush来打印WebView,创建一个Rectangle,把webview的内容渲染到Rectangle中,然后你可以打印这个Rectangle。
    • @Faywang-MSFT 我尝试了你的建议。它显示了内容模糊的打印 PDF。我已经发布了问题here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2015-09-28
    • 2010-10-20
    • 2014-04-15
    • 2010-12-25
    相关资源
    最近更新 更多