10

ユーザーがレポートを印刷し、たまたまMicrosoft XPS プリンターを使用している場合、デフォルトのファイル名を意味のあるものにしたいと思います。

XPS プリンターが印刷ジョブの名前を取得し、それをデフォルトのファイル名として使用すると思っていましたが、そうではありません。

そのプリンターに印刷するときに、生成されたXPSファイルの名前をデフォルトにする他のプログラム的な方法はありますか? 私は次のようなものがあるかもしれないと考えていました:

  • レジストリ キー
  • グローバル共有メモリ
  • SetDefaultXPSFilename() などの API 呼び出し
  • 印刷ジョブに関する拡張属性

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

参考文献

隆起: 20110729 (12 か月後)

4

3 に答える 3

5

さて、ここに簡単な方法があります(少なくとも私の場合):

(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ドキュメントライターではないとしましょう。私のコードは、いくつかのデータを自動的にアーカイブし、XPSでレポートを印刷してから、デフォルトのプリンターでレポートを印刷するようにユーザーに提供する必要があります。2番目のステップでは、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


時々便利です。

于 2010-08-31T23:11:13.977 に答える
2

Microsoft XPS Document Writer(MXDW)は、印刷するアプリケーションがDOCINFOにlpszOutputを設定している場合、ユーザーにプロンプ​​トを表示せずに出力ファイルパスを生成します。

アプリケーションのコードにアクセスできない場合、別のオプションは、lpszOutputが設定されていない場合でもファイルパスを生成するXPSドライバーを構築することです。Windows Driver Kit(WDK)から始めることができます。

詳細とリンクについては、この投稿を参照してください。

于 2009-08-18T16:24:20.030 に答える
0

Win2PDF 7は XPS として保存でき、デフォルトで印刷ジョブの名前になります。[ファイルの保存] ダイアログに表示される名前として印刷ジョブを使用したくない場合は、「PDFTitle」という名前のレジストリ値を設定して、既定のファイル名を変更できます。

DOCINFOの lpszOutput フィールドを使用するか 、Win2PDF ドキュメントで説明されているように「 PDFFileName 」という名前のレジストリ設定を設定することにより、プロンプトを表示せずに出力ファイルを設定することもできます。ファイル名に .xps 拡張子が含まれている場合、ファイルは XPS 形式で作成されます。

于 2010-03-02T20:33:29.990 に答える