using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Windows; using System.Xml; using Microsoft.Win32; using Stimulsoft.Report; namespace StimulsoftTest { public partial class MainWindow : Window { Dictionary compiled; public MainWindow() { InitializeComponent(); } private XmlDocument doc; private void XML_Click(object sender, RoutedEventArgs e) { var dialog = new OpenFileDialog(); dialog.Filter = "XML files|*.xml"; dialog.Multiselect = false; bool? fileSelected = dialog.ShowDialog(); if (fileSelected.HasValue && fileSelected.Value) { doc = new XmlDocument(); using (var stream = new FileStream(dialog.FileNames.First(), FileMode.Open, FileAccess.Read, FileShare.Read)) { doc.Load(stream); //var fileContents = new byte[stream.Length]; //stream.Read(fileContents, 0, (int)stream.Length); stream.Close(); } //xml.Text = doc.OuterXml; } } private void MRT_Click(object sender, RoutedEventArgs e) { var dialog = new OpenFileDialog(); dialog.Filter = "mrt files|*.mrt"; dialog.Multiselect = false; bool? fileSelected = dialog.ShowDialog(); if (fileSelected.HasValue && fileSelected.Value) { mrt.Text = dialog.FileNames.First(); } } private void PDF_Click(object sender, RoutedEventArgs e) { if (doc == null) return; _applyLicence(); var data = new DataSet(); try { var reader = new XmlNodeReader(doc); data.ReadXml(reader, XmlReadMode.InferSchema); reader.Close(); } catch (Exception ex) { Errors.Text = $"loading xml data: {ex.Message}"; return; } if (compiled == null) compiled = new Dictionary(); var report = new StiReport(); if (cbCompile.IsChecked ?? false) { try { string compiledReportFile = mrt.Text; if (compiled.TryGetValue(compiledReportFile, out MemoryStream compiledreport)) { report = StiReport.GetReportFromAssembly(compiledreport); Errors.Text = "Obtained Compiled Stimulsoft report from " + compiledReportFile; } else { report.Load(mrt.Text); report.DataSources.Clear(); report.Dictionary.Databases.Clear(); report.Dictionary.ImportXMLSchema(data); var ms=new MemoryStream(); report.Compile(ms); ms.Position = 0; compiled.Add(compiledReportFile, ms); Errors.Text = "Compiled Stimulsoft report into " + compiledReportFile; } } catch (Exception ex) { Errors.Text = ex.Message; return; } } else { report.Load(mrt.Text); report.DataSources.Clear(); report.Dictionary.Databases.Clear(); report.Dictionary.ImportXMLSchema(data); } byte step = 0; try { report.RegData(data); step = 1; var settings = new Stimulsoft.Report.Export.StiPdfExportSettings(); settings.Compressed = true; settings.EmbeddedFonts = false; settings.ImageQuality = 0.4f; settings.ImageResolution = 100; settings.ImageResolutionMode = Stimulsoft.Report.Export.StiImageResolutionMode.NoMoreThan; settings.CreatorString = "Saasplications Genie"; settings.StandardPdfFonts = true; report.Render(false); step = 2; var ms = new MemoryStream(); report.ExportDocument(StiExportFormat.Pdf, ms, settings); step = 3; report.Dictionary.DataStore.Clear(); data.Clear(); data.Dispose(); report.Dispose(); ms.Seek(0, SeekOrigin.Begin); string pdf = mrt.Text.Replace(".mrt", ".pdf"); step = 4; using (var file = new FileStream(pdf, FileMode.Create, FileAccess.Write)) { byte[] bytes = new byte[ms.Length]; ms.Read(bytes, 0, (int)ms.Length); file.Write(bytes, 0, bytes.Length); ms.Close(); Errors.Text += $"pdf created {pdf}"; } step = 5; if (cbOpen.IsChecked ?? false) { var psi = new System.Diagnostics.ProcessStartInfo(pdf); psi.UseShellExecute = true; System.Diagnostics.Process.Start(psi); } } catch (FormatException fex) { debugException(fex, step.ToString()); } catch (Exception ex) { debugException(ex, step.ToString()); } } private static void debugException(Exception ex, string text) { MessageBox.Show($"Error in step {text} : {ex.Message}", ex.GetType().ToString()); } private static void _applyLicence() { Stimulsoft.Base.StiLicense.Key = "6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHnrmZWwc333wxlPdkJ1bFtrqZ+3P/JCX1TZTRD1i9XTJMC5Wo" + "QBF9XUxooAZdq/q51mbg0IVZ8y50hwvy+aek+IO2ppBygYnI/ZdC7CRLQ0sAJtQuq6T6C1J3+6RdzIpg+qYxiMfG1y" + "HotRojoo9I4pindyVWSWRmSKfpX1IbwW0VTHkQYGR3F33mfcWpieSMc+QcnF44S79wYOu/5iNS5tsgb370k6SxMov4" + "4/MlVvk63b/ftEaPlfwEzaZ3/0+L1Kxl0wUwoNMreSRwhkp90//D35vnIkeWAlHpbGtZjJ4+cPzivbFy4bPTEetXtW" + "YcOKK3yzfz4RRgMWN1UpnTWLHKiWHROStTgGyh6ERQkx0iMSuNd2mVW8dSwBcrJXROjxC6lx1HzZgKo4qihhE8r1yB" + "hZImKaDyAnNFAimtRDElNS4UI5mCOS42VlRWmj6V7TUeUGI+eOiOu5Y438lxwqgY0UH7sRAfFGy11/Cv0GtapKBLQV" + "0ZAPB2PcZ2X8XWSZ870NbcFcJHT6bmJ5hgLk"; } } }