Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF应用程序中生成PDF和RTF报告?_C#_Wpf_Reporting - Fatal编程技术网

C# 如何在WPF应用程序中生成PDF和RTF报告?

C# 如何在WPF应用程序中生成PDF和RTF报告?,c#,wpf,reporting,C#,Wpf,Reporting,背景 我正在开发一个WPF应用程序,需要以PDF和RTF格式实现报告功能。这些报告大多是表格 应用程序没有数据库。取而代之的是,它的数据取自本地XML文件,我从中创建视图模型,然后将这些视图模型传递到UI以向用户演示。我需要为报告使用这些视图模型 问题 对于我来说,实现这一需求的最佳方式是什么,以便我可以使用现有的视图模型生成PDF和RTF格式的报告 潜力 我在想,如果这是一个web应用程序,我可以用HTML生成一个报告,并使用第三方工具将其转换为PDF和RTF。我以前做过这件事,我知道它会奏效

背景

我正在开发一个WPF应用程序,需要以PDF和RTF格式实现报告功能。这些报告大多是表格

应用程序没有数据库。取而代之的是,它的数据取自本地XML文件,我从中创建视图模型,然后将这些视图模型传递到UI以向用户演示。我需要为报告使用这些视图模型

问题

对于我来说,实现这一需求的最佳方式是什么,以便我可以使用现有的视图模型生成PDF和RTF格式的报告

潜力

我在想,如果这是一个web应用程序,我可以用HTML生成一个报告,并使用第三方工具将其转换为PDF和RTF。我以前做过这件事,我知道它会奏效的。不幸的是,不能保证用户将有一个互联网连接,所以我必须保持报告生成本地

所以我想知道如何使用XAML来定义报表模板。这可能吗?我在CodePlex上看到了一个实用程序,但它可以用于FlowDocument,但我认为这不是我需要的。我将生成的报告大部分是表格。

结果是:

似乎是解决办法

我可以在FlowDocument中指定表,并指定DataContext将我的视图模型绑定到它,然后我可以使用内置功能将其转换为PDF,或者使用类似以下内容将其转换为RTF:

// get FlowDocument object
var uri = new Uri("/Documents/SamplePDF.xaml", UriKind.Relative);

FlowDocument doc = App.LoadComponent(uri) as FlowDocument;


// create TextRange representation of the FlowDocument
var content = new TextRange(doc.ContentStart, doc.ContentEnd);

if (content.CanSave(DataFormats.Rtf))
{
    using (var stream = new FileStream(@"C:\Path\To\file.rtf", FileMode.OpenOrCreate))
    {
        // save it
        content.Save(stream, DataFormats.Rtf);
    }
}

几个月前,我使用telerik richtextbox和其他相关控件开发了一个类似的应用程序。我使用书签来标识xsd字段。当用户将xsd元素放入richtextbox时,报表设计器会创建书签。最后,它用xml中的值替换书签以生成输出。祝你的项目好运。