Способ по умолчанию имя сгенерированного файла XPS?

Если пользователь печатает отчет, и он использует принтер Microsoft XPS, я хотел бы, чтобы по умолчанию имя файла было чем-то значимым.

я бы подумал, что принтер XPS примет имя задания на печать и использует его в качестве имени по умолчанию, но это не так.

Есть ли какой-то другой, программный способ присвоить имя сгенерированному файлу XPS по умолчанию при печати на этом принтере? я думал, что может быть что-то вроде:

  • ключ реестра
  • глобальная общая память
  • Вызов API как SetDefaultXPSFilename()
  • расширенные атрибуты о задании на печать

пример

Автоматизируйте Excel, чтобы создать электронную таблицу:

Excel xl = new ExcelApplication();
Workbook wb = xl.Workbooks.Add();
GenerateReport(wb);
wb.PrintOut();

Теперь, если принтер пользователя по умолчанию является Microsoft XPS Document Writerтогда пользователь получит:

я хотел бы найти способ для этого File name быть по умолчанию на что-то полезное, например:

20110729 - Chip Bank Settlement Sheet.xps

Пользователь примет имя файла по умолчанию, и файлы будут организованы автоматически, а не пользователь, набрав:

asdfadf.xps

Рекомендации

Bump: 20110729 (12 месяцев спустя)

3 ответа

Ну, вот простой способ (по крайней мере, в моем случае):

(myPrintPage наследуется от System.Drawing.Printing.PrintDocument)

    With myPrintPage
        With .PrinterSettings
            If .PrinterName = "Microsoft XPS Document Writer" Then
            .PrintToFile = True
            .PrintFileName = "c:\test.pdf"
            End If
        End With
        .Print()
    End With

Я пока не нашел способа определить, будет ли выбранный мной принтер печатать в файл, отсюда и проверка на имя принтера.

В дополнение к выше, вот фрагмент кода, который я нашел полезным:

Допустим, мой принтер по умолчанию НЕ является XPS Document Writer. Мой код должен автоматически заархивировать некоторые данные, распечатать отчет в XPS, а затем предложить пользователю распечатать отчет на принтере по умолчанию. На втором шаге мне нужно изменить PrinterSettings myPrintPage.
Вот как:

  'save xps results
    'is the XPS printer installed?
    Dim myXPSfound As Boolean = False
    For Each s As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters
        If s.Contains("XPS") Then
            myXPSfound = True
            Exit For
        End If
    Next
    If myXPSfound Then
        'Manual settings of the XPS printerSettings
        Dim myXPSPrinterSettings As New Drawing.Printing.PrinterSettings
        myXPSPrinterSettings.Collate = False
        myXPSPrinterSettings.Copies = 1
        myXPSPrinterSettings.Duplex = Drawing.Printing.Duplex.Simplex
        myXPSPrinterSettings.FromPage = 0
        myXPSPrinterSettings.MaximumPage = 9999
        myXPSPrinterSettings.MinimumPage = 0
        myXPSPrinterSettings.PrinterName = "Microsoft XPS Document Writer"
        myXPSPrinterSettings.PrintRange = Drawing.Printing.PrintRange.AllPages
        myXPSPrinterSettings.PrintToFile = True
        myXPSPrinterSettings.ToPage = 1

        myPrintPage.PrinterSettings = myXPSPrinterSettings
        myPrintPage.PrinterSettings.PrintToFile = True
        myPrintPage.PrinterSettings.PrintFileName = mytargetFileName & ".xps"
        Try
            myPrintPage.Print()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Error Printing the XPS File")
        End Try
    Else
        MsgBox("The Microsoft XPS Writer was no found on this computer", MsgBoxStyle.Information, "Error Printing the XPS File")
    End If


Иногда это может быть удобно.

Microsoft XPS Document Writer (MXDW) создаст путь к выходному файлу без запроса пользователя, если приложение, которое печатает, устанавливает lpszOutput в DOCINFO.

Если у вас нет доступа к коду приложения, тогда другой вариант - создать драйвер XPS, который генерирует путь к файлу, даже если lpszOutput не был установлен. Windows Driver Kit (WDK) - это место для начала.

Для более подробной информации и ссылок смотрите этот пост.

Win2PDF 7 можно сохранить как XPS, и по умолчанию используется имя задания на печать. Если вы не хотите использовать задание на печать в качестве имени, отображаемого в диалоговом окне "Сохранить файл", вы можете изменить имя файла по умолчанию, установив значение реестра с именем " PDFTitle".

Вы также можете установить выходной файл без запроса, либо используя поле lpszOutput в DOCINFO, либо установив параметр реестра с именем " PDFFileName", как описано в документации Win2PDF. Файл будет создан в формате XPS, если имя файла содержит расширение.xps.

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