如何在一个文档中打印多个WPF页面

时间:2012-04-13 10:10:48

标签: wpf vb.net printing

我想创建一个包含多个页面的文档,每页都有一个wpf窗口。

我设法使用PrintDialog和PrintVisual打印一个窗口。然而,这似乎只适用于一个页面?任何想法如何我可以构建一个包含多个页面的文档并打印整套文档。

我可以插入那个视觉效果(在代码中引用)并将其作为页面插入文档中并在之后打印出来吗?

方法真的很糟糕吗?还有其他解决方法吗?

      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

1 个答案:

答案 0 :(得分:10)

您想要创建一个包含多个FixedDocument的{​​{1}}。

示例:

如何创建新文档和单页。

FixedPages

用C#编写,但是你应该可以转换为VB。

HTH,