2011-07-27 25 views
0

wpfで1つのxpsドキュメントに印刷する必要があるウィンドウをいくつか作成しました。各ウィンドウが開き、関連するデータが読み込まれてすぐに閉じます。現在、私は、XPSを作成するために以下のコードを使用:WPFで印刷

Using doc = New XpsDocument(TempLoc, FileAccess.Write) 
     Dim writer = XpsDocument.CreateXpsDocumentWriter(doc) 
     Dim collator = writer.CreateVisualsCollator() 

     Dim Window1 As Window1 = New Window1() 
     Window1.ShowDialog() 
     Dim Window2 As Window2 = New Window2() 
     Window2.ShowDialog() 
     Dim WindowX As WindowX = New WindowX() 
     WindowX.ShowDialog() 

     collator.BeginBatchWrite() 
     collator.Write(Window1) 
     collator.Write(Window2) 
     collator.Write(WindowX) 

     collator.EndBatchWrite() 
    End Using 

    Dim doc2 = New XpsDocument(TempLoc, FileAccess.Read) 

    Dim seq = doc2.GetFixedDocumentSequence() 

    Dim window = New Window() 
    window.Content = New DocumentViewer() With {.Document = seq} 
    window.ShowDialog() 

    doc2.Close() 

しかし、このアプローチで問題は、印刷領域が機械間で変化することがある - 私はローカルの画面サイズが使用されているために、この等

によるものであると仮定

このコードを変更することで、プログラムがコンピュータとは独立した完全なウィンドウを印刷できるようにすることはできますか?代わりに、この問題にアプローチするより良い方法はありますか?任意のヘルプ

答えて

0

ため

おかげで私はどちらか追加するか、追加配置のUIElementによってFixedDocumentsで印刷します。私はヘルパークラスhereに完全なソースコードを投稿しました。 UIElementsで分割すると、正確な印刷出力をより詳細に制御できますが、ウィンドウを表示するのではなく、印刷コードを分離する必要があります。

私はこのヘルパークラスを使用して、すべてのコンピュータで常に同じように出現する、きれいに整形された複数ページのレポートを作成しました。

+0

あなたの答えはありがとうございます。私はまだあなたのヘルパークラスを完全に実装する時間がありませんでしたが、確かに行く方法のように見えます!ありがとう! – qu1ckdry