public async Task LoadReport(string categoryName, string reportFileName, string reportName) { // load report try { using (Stream fs = File.OpenRead("Assets/Reports/" + categoryName.Trim() + "/" + reportFileName.Trim())) { _report.Load(fs, reportName); } } catch (Exception ex) { MessageDialog md = new MessageDialog(string.Format(Strings.ErrorFormat, reportName, ex.Message), Strings.ErrorTitle); await md.ShowAsync(); return; } // flexViewer.DocumentSource = null; // render report progressRing.IsActive = true; try { await _report.RenderAsync(); } catch (Exception ex) { MessageDialog md = new MessageDialog(string.Format(Strings.ErrorFormat, reportName, ex.Message), Strings.ErrorTitle); await md.ShowAsync(); return; } finally { progressRing.IsActive = false; } // assign rendered report to the viewer flexViewer.DocumentSource = _report; }
private async void PdfButton_Click(object sender, RoutedEventArgs e) { // 現在、FlexGrid に表示されている順のデータ var currentData = this.flexgrid1.Rows.Select(r => r.DataItem).Cast <Book>(); // FlexReportの定義を読み込む var rpt = new C1FlexReport(); using (var stream = File.OpenRead("Assets/BooksReport.flxr")) rpt.Load(stream, "BooksReport"); // データを連結 rpt.DataSource.Recordset = currentData.ToList(); // IEnumerable<T>は不可 // レポートを生成 await rpt.RenderAsync(); // 印刷する場合 //await rpt.ShowPrintUIAsync(); // PDF ファイルに直接保存する場合 var picker = new FileSavePicker() { SuggestedStartLocation = PickerLocationId.DocumentsLibrary }; picker.FileTypeChoices.Add("PDF ファイル", new string[] { ".pdf", }); picker.SuggestedFileName = "BarCodeControlSample"; var file = await picker.PickSaveFileAsync(); if (file != null) { // 出力先となる PdfFilter オブジェクトを作成 var filter = new PdfFilter(); filter.StorageFile = file; // Windows Forms 等では、filter.FileName = file.Path; とする // ファイルへ出力 await rpt.RenderToFilterAsync(filter); } }