123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- using FastReport;
- using FastReport.Forms;
- using FastReport.Utils;
- using System;
- using System.Drawing.Printing;
- using System.IO;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Windows;
- namespace Viewer
- {
- public partial class App : Application
- {
- private void Application_Startup(object sender, StartupEventArgs e)
- {
- this.ShutdownMode = ShutdownMode.OnExplicitShutdown;
- Config.PreviewSettings.ShowInTaskbar = true;
- Config.ReportSettings.ShowProgress = false;
- Config.IsStringOptimization = true;
- var parser = new CmdParser(e.Args);
- if (parser.HasCommand("/p"))
- {
- Print(parser[CmdParser.DEFAULT_KEY], parser["/p"]);
- }
- else
- {
- Default(parser[CmdParser.DEFAULT_KEY]);
- }
- this.Shutdown();
- }
- private void Print(string[] reports, string[] args)
- {
- PrinterSettings printerSettings;
- if (args == null || args.Length == 0 || reports == null || reports.Length == 0)
- {
- using (var r = new Report())
- {
- if (r.ShowPrintDialog(out printerSettings))
- {
- if (reports == null || reports.Length == 0)
- {
- string print_arg = SerializeToString(printerSettings);
- CmdParser parser = new CmdParser();
- parser[CmdParser.DEFAULT_KEY] = new string[] { "report1.fpx", "report2.fpx", "...", "reportN.fpx" };
- parser["/p"] = new string[] { print_arg };
- using (var form = new MessageBoxWithEditorForm())
- {
- form.InnerText = parser.ToString();
- form.ShowDialog();
- }
- }
- else
- {
- Print(reports, printerSettings);
- }
- }
- }
- }
- else
- {
- printerSettings = DeserializeFromString(args[0]);
- Print(reports, printerSettings);
- }
- }
- private void Print(string[] reports, PrinterSettings printerSettings)
- {
- foreach (string report in reports)
- {
- using (var r = new Report())
- {
- r.LoadPrepared(report);
- r.PrintPrepared(printerSettings);
- }
- }
- }
- private void Default(string[] reports)
- {
- using (var report = new Report())
- {
- if (reports != null && reports.Length > 0)
- {
- report.LoadPrepared(reports[0]);
- }
- else
- {
- report.Prepare();
- }
- report.ShowPrepared();
- }
- }
- private string SerializeToString(PrinterSettings printerSettings)
- {
- var bf = new BinaryFormatter();
- using (var ms = new MemoryStream())
- {
- bf.Serialize(ms, printerSettings);
- return Convert.ToBase64String(ms.ToArray());
- }
- }
- private PrinterSettings DeserializeFromString(string printerSettings)
- {
- try
- {
- var bf = new BinaryFormatter();
- using (var ms = new MemoryStream(Convert.FromBase64String(printerSettings)))
- {
- return (PrinterSettings)bf.Deserialize(ms);
- }
- }
- catch (Exception)
- {
- return new PrinterSettings();
- }
- }
- }
- }
|