如何在WPF应用程序中处理PDF和RTF报告的生成?

时间:2013-06-25 09:53:33

标签: c# wpf reporting

背景

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

该应用程序没有数据库。相反,它的数据来自本地XML文件,我从中创建View模型,然后将其传递给UI以呈现给用户。我需要将这些视图模型用于报告。

问题

我接触此要求的最佳方式是什么,以便我可以使用现有的View Models以PDF和RTF格式生成报告?

电位

我在想,如果这是一个Web应用程序,我可以用HTML生成报告,并使用第三方工具将其转换为PDF和RTF。我以前做过这个,我知道它会起作用。遗憾的是,无法保证用户将拥有互联网连接,因此我必须将报告生成保持在本地。

所以我想知道如何使用XAML来定义报告模板。这可能吗?我在CodePlex上看到Xaml FlowDocument or XPS to PDF Converter的实用程序,但这适用于FlowDocument,但我认为这不是我需要的。我将要生成的报告大多是表格式的。

1 个答案:

答案 0 :(得分:0)

事实证明:

Xaml FlowDocument or XPS to PDF Converter

似乎是解决方案。

我可以在FlowDocument中指定表,并指定一个DataContext来将我的View Models绑定到它,然后我可以使用内置功能将其转换为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);
    }
}