複数のページがあり、各ページに1つのwpfウィンドウが表示されているドキュメントを作成したいと思います。
PrintDialogとPrintVisualを使用して1つのウィンドウを印刷することができました。しかし、これは1つのページでしか機能しないようですか?いくつかのページでドキュメントを作成し、完全なセットを印刷する方法についてのアイデア。
そのビジュアル(コードで参照)を挿入し、ドキュメントのページとして挿入して、その後印刷することはできますか?
アプローチは本当に悪いですか?この問題を解決する他の方法はありますか?
Sub Print (Dim ele As FrameWorkElement)
Dim margin As Double = 30
Dim titlePadding As Double = 10
Dim printDlg As PrintDialog = New PrintDialog()
printDlg.PrintTicket.PageOrientation = PageOrientation.Landscape
If (printDlg.ShowDialog() <> True) Then Return
Dim formattedText As FormattedText = New FormattedText(Name, CultureInfo.GetCultureInfo("en-us"),
FlowDirection.LeftToRight, New Typeface("Verdana"), 25, Brushes.Black)
formattedText.MaxTextWidth = printDlg.PrintableAreaWidth
Dim scale As Double = Math.Min(printDlg.PrintableAreaWidth / (ele.ActualWidth + (Margin * 2)),
(printDlg.PrintableAreaHeight - (formattedText.Height + titlePadding)) / (ele.ActualHeight + (Margin * 2)))
Dim visual As DrawingVisual = New DrawingVisual()
Using context As DrawingContext = visual.RenderOpen()
Dim brush As VisualBrush = New VisualBrush(ele)
context.DrawRectangle(brush, Nothing, New Rect(New Point(margin, margin + formattedText.Height + titlePadding),
New Size(ele.ActualWidth, ele.ActualHeight)))
context.DrawText(formattedText, New Point(margin, margin))
End Using
visual.Transform = New ScaleTransform(scale, scale)
printDlg.PrintVisual(visual, "")
End Sub