Silverlight多页打印

时间:2014-02-13 12:04:34

标签: silverlight c#-4.0 printing

我正在使用PrintDocument实施silverlight打印。我的UI是使用XamlReader生成的运行时,它解析了我在db中存储的xaml

这是代码:

                        string str = sb.ToString();
                        newUI = XamlReader.Load(sb.ToString()) as FrameworkElement;
                        newUI.DataContext = ReportData;
                        grdPreviewArea.Children.Add(newUI);
                        grdPreviewArea.Height = pageHeight;
                        grdPreviewArea.Width = pageWidth;
                        Grid.SetColumn(newUI, 1);
                        Grid.SetRow(newUI, 1); 

现在打印我在我的打印事件句柄中将newUI设置为e.PageVisual。 如果渲染的UI适合单页,这可以正常工作,但如果它不适合单页,我无法打印第二页。

1 个答案:

答案 0 :(得分:1)

  • 首先,您需要计算出需要多少页面

    Dim pagesNeeded As Integer = Math.Ceiling(gridHeight / pageHeight)//获取所需页数

  • 然后,一旦将第一页发送到打印机,您需要将该数据移出视图并将新数据放入视图中以备打印。我这样做是通过将整个数据集转换为图像/ UI元素,然后我可以相应地调整Y值以在屏幕上显示下一组所需数据。

    transformGroup.Children.Add(New。TranslateTransform(){。Y = - (pageIndex * pageHeight)})

  • 然后,一旦达到所需页数,请告诉打印机停止

        If pagesLeft <= 0 Then
            e.HasMorePages = False
            Exit Sub
        Else
            e.HasMorePages = True
        End If
    

或者,如果这工作太多,您只需缩放所有音符以适应屏幕即可。可能再次转换为UI元素。

查看此链接以转换为UI元素。

http://www.codeproject.com/Tips/248553/Silverlight-converting-to-image-and-printing-an-UI

希望这有帮助