2

当从我的 .NET 应用程序中选择 Microsoft XPS Document Writer 进行打印时,用户会看到一个文件对话框,其中文件名最初为“*.XPS”。我希望它默认为一个更有用的名称(理想情况下,使用我提供的文档名称)。

我读了以下问题:

如何默认生成的 XPS 文件的名称?

...并尝试按照答案中的建议设置 PrinterSettings.PrintFileName,但它似乎不起作用...

        PrintDialog printDlg = new PrintDialog();
        PrintDocument printDoc = new PrintDocument();

        printDoc.DocumentName = name;
        printDlg.Document = printDoc;
        printDlg.AllowSelection = true;
        printDlg.AllowSomePages = true;

        //Call ShowDialog 

        if (printDlg.ShowDialog() == DialogResult.OK)
        {
            if (!printDoc.PrinterSettings.IsValid)
            {
                throw new Exception("Error: cannot find the default printer.");
            }
            else
            {
                if (printDoc.PrinterSettings.PrinterName.Contains("XPS"))
                {
                    printDoc.PrinterSettings.PrintFileName = name + ".XPS";
                }

                // Actual printing code from this point onward...

如果我打印到 Adob​​e PDF,它会将文件名默认为打印文档名称 +“.PDF”(理想行为),但内置的 XPS 打印驱动程序似乎缺少此功能,甚至似乎忽略了 PrintFileName 属性. 我做错了什么,还是 XPS 打印驱动程序有问题?

顺便说一句,我在 Vista Business SP2 上使用 VS 2010 / .NET 4.0(都是 SP1)

4

1 回答 1

0

我相信这是 XPS Document Writer 的限制。Win2PDF打印机驱动程序可以保存为 XPS格式,默认使用打印文档名称。您可以尝试使用它来代替 Microsoft XPS Document Writer。

于 2019-06-05T14:00:32.310 回答