打印单页报告(wpf c#program)的最快选项是什么
我正在开发一个wpf c#计划来管理一所学校。用户有时必须为单个学生打印证书。例如,该学生在我们学校学习的证明,或其津贴金额的证明 关于这些报告,有:打印单页报告(wpf c#program)的最快选项是什么,c#,wpf,reporting-services,rdl,C#,Wpf,Reporting Services,Rdl,我正在开发一个wpf c#计划来管理一所学校。用户有时必须为单个学生打印证书。例如,该学生在我们学校学习的证明,或其津贴金额的证明 关于这些报告,有: 固定文本 关于学生的动态信息,如他的名字等 对于这个任务,我构建了RDL,它可以达到这个目的,但是用户要求更快的速度 我的问题是:RDL(使用报表服务器)是完成此任务的正确方法吗?或者有其他更快的选项吗?我使用流程文档来实现这样的简单打印功能。您可以向文档中添加XAML元素,就像在窗口中以编程方式创建XAML一样。使用相同的布局控件(网格、堆栈面
我的问题是:RDL(使用报表服务器)是完成此任务的正确方法吗?或者有其他更快的选项吗?我使用
流程文档
来实现这样的简单打印功能。您可以向文档中添加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,并提供各种方法,如“AddParagation()”、“AddImage()”,以及用于指定页边距、字体、字体大小等的不同重载
最后的文档分页器位是我的实现的简化版本,但它可能足以满足您的需要。(我创建了一个自定义文档分页器,可以在每页上设置页眉和页脚)。非常感谢。我从这个方法开始,试图制作一张打印纸。我确信我必须检查这个方法,看看它是否允许不预览的即时打印,导出到html或docx,等等。