0

我正在从我的 avalonia 应用程序中打印一份基本测试文档。问题是当我从 Windows 10 中选择“Microsoft Print to PDF”作为我的目标打印机时,应用程序挂起并且没有任何反应。

我认为问题在于,Avalonia 窗口以某种方式阻止了与打印到 pdf 服务相关的保存文件对话框的显示。

因此,一个(几乎)解决方法是隐藏窗口,然后再次显示它,如下所示:

private void PrintTestPage()
{
    window.Hide();

    PrintDocument pd = new PrintDocument();
    pd.PrinterSettings.PrinterName = SelectedPrinter;
    pd.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
    {
        e1.Graphics.DrawString("This is a test page.", new Font("Times New Roman", 12), new SolidBrush(Color.Black), new RectangleF(0, 0, pd.DefaultPageSettings.PrintableArea.Width, pd.DefaultPageSettings.PrintableArea.Height));

    };
    try
    {
        pd.Print();
    }
    catch (Exception ex)
    {
        throw new Exception("Error while printing: ", ex);
    }

    window.Show();
}

但是,当用户选择任何其他打印机时,该窗口将被隐藏并无缘无故地显示。除此之外,我希望保存对话框出现在我的应用程序主窗口顶部,就像在我测试“Microsoft Print to PDF”打印机的任何其他应用程序中一样。

我在Github上创建了一个最小的复制示例。

4

0 回答 0