如果用户打印报告,并且他们碰巧正在使用微软 XPS 打印机,我希望默认的文件名是有意义的。
我本以为 XPS 打印机会采用打印作业的名称,并将其用作默认文件名 - 但事实并非如此。
当我打印到该打印机时,是否有其他某种编程方式来默认生成的 XPS 文件的名称?我在想可能会有这样的事情:
- 一个注册表项
- 全局共享内存
- API 调用如 SetDefaultXPSFilename()
- 有关打印作业的扩展属性
Example
自动执行 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
参考
- Eggheadcafe:XPS 默认文件名 http://www.eggheadcafe.com/software/aspnet/30644727/xps-default-file-name.aspx
- MSDN:发送到打印机时的 XPS 名称 http://social.msdn.microsoft.com/Forums/en-US/windowsxps/thread/362da945-575f-41a6-8588-68d71929f146
碰撞:20110729(12个月后)
出色地,
这是一个简单的方法(至少就我而言):
(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 中打印报告,然后提供用户在默认打印机上打印报告。在第二步中,我需要更改 myPrintPage 的 PrinterSettings。
具体方法如下:
'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
有时它可以很方便。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)