【问题标题】:Printing text in Silverlight that measures larger than page在 Silverlight 中打印大于页面的文本
【发布时间】:2014-01-01 14:11:26
【问题描述】:

我有一个 silverlight 应用程序,它允许人们进入可以打印的注释字段,用于执行此操作的代码是:

PrintDocument pd = new PrintDocument();

        Viewbox box = new Viewbox();
        TextBlock txt = new TextBlock();
        txt.TextWrapping = TextWrapping.Wrap;
        Paragraph pg = new Paragraph();
        Run run = new Run();
        pg = (Paragraph)rtText.Blocks[0];
        run = (Run)pg.Inlines[0];
        txt.Text = run.Text;

        pd.PrintPage += (s, pe) =>
        {
            double grdHeight = pe.PrintableArea.Height - (pe.PageMargins.Top + pe.PageMargins.Bottom);
            double grdWidth = pe.PrintableArea.Width - (pe.PageMargins.Left + pe.PageMargins.Right);
            txt.Width = grdWidth;
            txt.Height = grdHeight;
            pe.PageVisual = txt;
        };

        pd.Print(lblTitle.Text);

这只是在页面上打印文本框的内容,但是一些注释的跨越比页面本身大,导致它被切断。如何更改我的代码以测量文本并添加更多页面,或者是否有更好的方法来执行上述操作,它会自动为我创建多个页面?

【问题讨论】:

    标签: silverlight printdocument


    【解决方案1】:

    您的问题有多种解决方案,所有这些都在 Google 上的“多页打印 Silverlight”下。我遇到了类似的问题并尝试了其中的大部分。唯一对我有用的是这个:

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

    但老实说,您应该先查看 Google,看看是否有更好的解决方案来解决您的具体问题。

    回答您的问题,有一个名为 HasMorePages 的标志表示您需要一个新页面。只需输入 pe.HasMorePages 即可。

    希望对你有帮助

    【讨论】:

    • 相信我,我首先查看了 Google。没有找到我需要的东西,但我会看看你提供的链接。
    【解决方案2】:
    • 首先你需要计算出需要多少页

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

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

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

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

      '设置是否有超过 1 页要打印 如果 pagesLeft

    或者,如果这工作量太大,您可以简单地缩放所有音符以适应屏幕。再次可能通过转换为 UI 元素。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多