【问题标题】:What is the fastest option for printing a single page report (wpf c# program)打印单页报告最快的选项是什么(wpf c#程序)
【发布时间】:2015-12-14 10:15:42
【问题描述】:

我正在开发一个管理学校的 wpf c# 程序。有时,用户必须为单个学生打印证书。例如,该学生正在我们机构学习的认证,或与他的助学金数额相关的认证。

在这些报告中有:

  1. 固定文本
  2. 学生的动态信息,如姓名等

为了这个任务,我构建了 rdls 并达到了目的,但用户要求更快的速度。

我的问题是:rdls(在报表服务器上工作)是完成这项任务的正确方法吗?还是有其他更快的选择?

【问题讨论】:

    标签: c# wpf reporting-services rdl


    【解决方案1】:

    我使用FlowDocument 来实现诸如此类的简单打印功能。就像在窗口中以编程方式创建 XAML 一样,您可以将 XAML 元素添加到文档中。使用相同的布局控件(网格、堆栈面板等)来排列所有其他控件(文本段落、图像等),并且在打印 FlowDocument 时,它将根据各种因素“流入”到页面中例如在打印机对话框中选择的纸张尺寸。

    免责声明:这是匆忙复制/粘贴的,但它应该让您了解它的工作原理!

    // Show the print dialog
    var dlg = new PrintDialog();
    if (!dlg.ShowDialog().GetValueOrDefault())
    {
        // User cancelled
        return;
    }
    
    // Create and initialise the FlowDocument
    _doc = new FlowDocument();
    _doc.FontFamily = new FontFamily("Arial");
    _doc.FontSize = 14;
    
    // Add a paragraph of text
    var para = new Paragraph(new Run("My paragraph....."))
    {
        FontSize = 14,
        Foreground = new SolidColorBrush(Colors.Black),
        Margin = new Thickness(0,0,0,12)
    };
    _doc.Blocks.Add(para);
    
    // Add an image
    var para = new Paragraph();
    var img = new Image
    {
        Source = bitmapSource, 
        HorizontalAlignment = HorizontalAlignment.Center, 
        Margin = new Thickness(0,0,0,12)
    };
    para.Inlines.Add(img);
    _doc.Blocks.Add(para);
    
    // Print
    var documentPaginator = ((IDocumentPaginatorSource)_doc).DocumentPaginator;
    dlg.PrintDocument(documentPaginator, "My print job");
    

    在我的应用程序中,我将所有这些都封装在一个类中(因为我有几个地方需要打印功能)。该类在其构造函数中创建并初始化FlowDocument,并提供各种方法,如“AddParagraph()”、“AddImage()”,具有不同的重载来指定边距、字体、字体大小等。

    最后的文档分页器位是我的实现的简化版本,但它可能足以满足您的需求。 (我创建了一个自定义文档分页器,可以在每个页面上设置页眉和页脚)。

    【讨论】:

    • 非常感谢。我从这种方法开始,试图制作一张印刷纸。我确信我将不得不检查此方法以了解它是否允许即时打印而无需预览、导出到 html 或 docx 等等。
    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2011-10-30
    相关资源
    最近更新 更多