背景
我正在开发一个WPF应用程序,我需要以PDF和RTF格式实现报告功能。报告大多是表格式的。
该应用程序没有数据库。相反,它的数据来自本地XML文件,我从中创建View模型,然后将其传递给UI以呈现给用户。我需要将这些视图模型用于报告。
问题
我接触此要求的最佳方式是什么,以便我可以使用现有的View Models以PDF和RTF格式生成报告?
电位
我在想,如果这是一个Web应用程序,我可以用HTML生成报告,并使用第三方工具将其转换为PDF和RTF。我以前做过这个,我知道它会起作用。遗憾的是,无法保证用户将拥有互联网连接,因此我必须将报告生成保持在本地。
所以我想知道如何使用XAML来定义报告模板。这可能吗?我在CodePlex上看到Xaml FlowDocument or XPS to PDF Converter的实用程序,但这适用于FlowDocument,但我认为这不是我需要的。我将要生成的报告大多是表格式的。
答案 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);
}
}