Способ по умолчанию имя сгенерированного файла 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.