printing - 默认生成的 XPS 文件的名称的方法?

标签 printing xps

如果用户打印报告,并且他们碰巧正在使用 微软 XPS 打印机 ,我希望默认文件名有意义。

我原以为 XPS 打印机会采用打印作业的名称,并将其用作默认文件名 - 但事实并非如此。

当我打印到该打印机时,是否有其他一些编程方式来默认生成的 XPS 文件的名称?我在想可能有这样的事情:

  • 一个注册表项
  • 全局共享内存
  • API 调用,如 SetDefaultXPSFilename()
  • 关于打印作业的扩展属性

  • 例子

    自动化 Excel 以创建电子表格:
    Excel xl = new ExcelApplication();
    Workbook wb = xl.Workbooks.Add();
    GenerateReport(wb);
    wb.PrintOut();
    

    现在,如果用户的默认打印机是 Microsoft XPS Document Writer ,那么用户将得到:

    enter image description here

    我想要一个方法 File name默认为有用的东西,例如:
    20110729 - Chip Bank Settlement Sheet.xps
    

    用户将接受默认文件名,文件将自动组织,而不是用户键入:
    asdfadf.xps
    

    引用
  • eggheadcafe: XPS Default File Name
  • MSDN: XPS Name when Sent to Printer

  • 凹凸: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
    

    有时它会很方便。

    关于printing - 默认生成的 XPS 文件的名称的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1196110/

    相关文章:

    java - 如何在 java 中打印 .doc 和 .docx

    html - 打印页表行/单元格时获得随机高度

    delphi - 如何使用TPrinter的本地实例

    printing - ReportViewer - 设置默认文件名

    c# - 如何验证 XPS 文档?

    Python,使用print()和replace()函数解释string给出的代码

    php - 同一页上有两个具有不同 css 的打印按钮......可能吗?

    wpf - 使用 PDFsharp 或 iTextsharp 将 XPS 转换为 PDF

    wpf - XPS 文档中的注释

    c# - XpsDocument GetFixedDocumentSequence 为特定计算机生成的文件返回 null