2011-07-27 104 views
0

我在wpf中創建了一些需要打印到一個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

我通過兩種追加或添加放置UI元素與FixedDocuments打印。我將完整的源代碼發佈到我的幫助類here。您可能會發現,通過UIElements進行分解可以更好地控制您的確切打印輸出,但是,它要求您分開打印代碼,而不是僅僅發出窗口。

我已經使用這個助手類來創建一些非常好的格式化多頁面報表,它們在每臺計算機上總是顯示相同的。

+0

戰神,謝謝你的回答。我還沒有時間來完全實現你的助手類,但它絕對看起來像要走的路!謝謝! – qu1ckdry