Как установить имя файла по умолчанию при печати в файл XPS в.NET

Когда Microsoft XPS Document Writer выбран для печати из моего приложения.NET, пользователю предоставляется диалоговое окно файла, где имя файла изначально равно "*.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...

Если я печатаю в Adobe PDF, по умолчанию в качестве имени файла указывается имя печатного документа + ".PDF" (идеальное поведение), но во встроенном драйвере печати XPS эта функция отсутствует, и даже кажется, что он игнорирует свойство PrintFileName, Я что-то не так делаю или это проблема с драйвером печати XPS?

Кстати, я использую VS 2010 / .NET 4.0 (оба SP1) на Vista Business SP2

0 ответов

Я считаю, что это ограничение XPS Document Writer. Драйвер принтера Win2PDF можно сохранить как XPS, и по умолчанию используется имя документа печати. Вы можете попробовать использовать его вместо Microsoft XPS Document Writer.

Другие вопросы по тегам