public static void ExportToPdf(this Report report ,string path) { using (PdfSurface pdfSurface = new PdfSurface ( path,report.WidthWithMargins,report.HeightWithMargins)) { Cairo.Context cr = new Cairo.Context (pdfSurface); cr.Translate(report.Margin.Left,report.Margin.Top); ReportRenderer renderer = new ReportRenderer (){ Context = cr}; renderer.RegisterRenderer (typeof(TextBlock), new TextBlockRenderer ()); renderer.RegisterRenderer (typeof(Line), new LineRenderer ()); renderer.RegisterRenderer (typeof(Image), new ImageRenderer (){ PixbufRepository = new PixbufRepository(report.ResourceRepository)}); SectionRenderer sr = new SectionRenderer(); renderer.RegisterRenderer(typeof(ReportHeaderSection), sr); renderer.RegisterRenderer(typeof(ReportFooterSection), sr); renderer.RegisterRenderer(typeof(DetailSection), sr); renderer.RegisterRenderer(typeof(PageHeaderSection), sr); renderer.RegisterRenderer(typeof(PageFooterSection), sr); MonoReports.Model.Engine.ReportEngine engine = new MonoReports.Model.Engine.ReportEngine (report,renderer); engine.Process (); for (int i = 0; i < report.Pages.Count; ++i) { renderer.RenderPage (report.Pages [i]); cr.ShowPage (); } pdfSurface.Finish (); (cr as IDisposable).Dispose (); } }
public SectionView(IControlViewFactory controlViewFactory, Section section,Cairo.PointD sectionSpan) : base(section) { sectionRenderer = controlViewFactory.ReportRenderer.RenderersDictionary [section.GetType ()] as SectionRenderer; SectionHederHeightInUnit = SectionheaderHeight / sectionRenderer.UnitMulitipier; DesignCrossSectionControlsToAdd = new List<ControlViewBase> (); DesignCrossSectionControlsToRemove = new List<ControlViewBase> (); this.controlViewFactory = controlViewFactory; if (section is DetailSection) AllowCrossSectionControl = false; else { AllowCrossSectionControl = true; } SectionSpan = sectionSpan; controls = new System.Collections.Generic.List<ControlViewBase> (); AddControls (this.section.Controls); SectionGripperColor = sectionHeaderColor1; InvalidateBound (); }
public MonoreportsDesignerControl() { Build (); dpi = Gdk.Screen.Default.Resolution; Report startReport = new Report(){ DataScript = @" datasource = new [] { new { Name=""Alfred"", Surname = ""Tarski"", Age = ""82"" }, new { Name=""Saul"", Surname = ""Kripke"", Age = ""70"" }, new { Name=""Gotlob"", Surname = ""Frege"", Age = ""85"" }, new { Name=""Kurt"", Surname = ""Gödel"", Age = ""72"" }, }; parameters.Add(""Title"",new { Title = ""The Logicans"", SubTitle = ""...and philosophers...""}); "}; string template = @" using System; using System.Collections.Generic; {0} public sealed class GenerateDataSource {{ public object Generate() {{ object datasource = null; Dictionary<string,object> parameters = new Dictionary<string,object>(); {1} return new object[] {{datasource,parameters}}; }} }} "; compilerService = new CompilerService(template); workspaceService = new WorkspaceService (this,maindesignview1.DesignDrawingArea,maindesignview1.PreviewDrawingArea,mainPropertygrid, StatusBarLabel); designService = new DesignService (workspaceService,compilerService,startReport); toolBoxService = new ToolBoxService (); designService.ToolBoxService = toolBoxService; maindesignview1.DesignService = designService; maindesignview1.WorkSpaceService = workspaceService; maindesignview1.Compiler = compilerService; var reportRenderer = new ReportRenderer(); reportRenderer.RegisterRenderer(typeof(Controls.TextBlock), new TextBlockRenderer(){ DPI = dpi}); reportRenderer.RegisterRenderer(typeof(Controls.Line), new LineRenderer(){ DPI = dpi}); reportRenderer.RegisterRenderer(typeof(MonoReports.Model.Controls.Image), new ImageRenderer(){ PixbufRepository = designService.PixbufRepository, DPI = dpi}); SectionRenderer sr = new SectionRenderer() { DPI = dpi}; reportRenderer.RegisterRenderer(typeof(Controls.ReportHeaderSection), sr); reportRenderer.RegisterRenderer(typeof(Controls.ReportFooterSection), sr); reportRenderer.RegisterRenderer(typeof(Controls.DetailSection), sr); reportRenderer.RegisterRenderer(typeof(Controls.PageHeaderSection), sr); reportRenderer.RegisterRenderer(typeof(Controls.PageFooterSection), sr); maindesignview1.ReportRenderer = reportRenderer; workspaceService.InvalidateDesignArea (); reportExplorer.DesignService = designService; reportExplorer.Workspace = workspaceService; toolBoxService.AddTool (new ZoomTool (designService)); toolBoxService.AddTool (new LineTool (designService)); toolBoxService.AddTool (new LineToolV (designService)); toolBoxService.AddTool (new LineToolH (designService)); toolBoxService.AddTool (new TextBlockTool (designService)); toolBoxService.AddTool (new SubreportTool (designService)); toolBoxService.AddTool (new SectionTool (designService)); toolBoxService.AddTool (new ImageTool (designService)); toolBoxService.AddTool (new RectTool (designService)); toolBoxService.BuildToolBar (mainToolbar); ToolBarButton exportPdfToolButton = new ToolBarButton ("pdf.png","exportPdf","export to pdf"); exportPdfToolButton.Clicked += delegate(object sender, EventArgs e) { designService.ExportToPdf(); }; mainToolbar.Insert (exportPdfToolButton,7); mainPropertygrid.LoadMonoreportsExtensions(); }
public MonoreportsDesignerControl() { Build (); MonoReports.Model.Engine.ReportEngine.EvaluatorInit(); Report startReport = newReportTemplate(); double resolutionX = ((double) Gdk.Screen.Default.Width) / ((double) Gdk.Screen.Default.WidthMm) * 25.4; compilerService = new CompilerService(ReportExtensions.ScriptTemplateForDataSourceEvaluation); pixbufRepository = new PixbufRepository () { Report = startReport }; workspaceService = new WorkspaceService (this,maindesignview1.DesignDrawingArea,maindesignview1.PreviewDrawingArea,mainPropertygrid, StatusBarLabel); var reportRenderer = new ReportRenderer(){ ResolutionX = resolutionX}; reportRenderer.RegisterRenderer(typeof(Controls.TextBlock), new TextBlockRenderer()); reportRenderer.RegisterRenderer(typeof(Controls.Line), new LineRenderer()); reportRenderer.RegisterRenderer(typeof(MonoReports.Model.Controls.Image), new ImageRenderer(){ PixbufRepository = pixbufRepository}); SectionRenderer sr = new SectionRenderer(); reportRenderer.RegisterRenderer(typeof(Controls.ReportHeaderSection), sr); reportRenderer.RegisterRenderer(typeof(Controls.ReportFooterSection), sr); reportRenderer.RegisterRenderer(typeof(Controls.DetailSection), sr); reportRenderer.RegisterRenderer(typeof(Controls.PageHeaderSection), sr); reportRenderer.RegisterRenderer(typeof(Controls.PageFooterSection), sr); designService = new DesignService (workspaceService,reportRenderer,pixbufRepository,compilerService, startReport); toolBoxService = new ToolBoxService (); designService.ToolBoxService = toolBoxService; maindesignview1.DesignService = designService; maindesignview1.WorkSpaceService = workspaceService; maindesignview1.ReportRenderer = reportRenderer; workspaceService.InvalidateDesignArea (); reportExplorer.DesignService = designService; reportExplorer.Workspace = workspaceService; toolBoxService.AddTool (new ZoomTool (designService)); toolBoxService.AddTool (new LineTool (designService)); toolBoxService.AddTool (new LineToolV (designService)); toolBoxService.AddTool (new LineToolH (designService)); toolBoxService.AddTool (new TextBlockTool (designService)); //TODO 3tk: currently not supported //toolBoxService.AddTool (new SubreportTool (designService)); toolBoxService.AddTool (new SectionTool (designService)); toolBoxService.AddTool (new ImageTool (designService)); toolBoxService.AddTool (new RectTool (designService)); toolBoxService.BuildToolBar (mainToolbar); ToolBarButton exportPdfToolButton = new ToolBarButton ("pdf.png","exportPdf",Catalog.GetString("Export to pdf")); exportPdfToolButton.Clicked += delegate(object sender, EventArgs e) { designService.ExportToPdf(); }; var sep = new Gtk.SeparatorToolItem(); mainToolbar.Insert (sep,mainToolbar.NItems); mainToolbar.Insert (exportPdfToolButton,mainToolbar.NItems); //ToolBarButton btn = new ToolBarButton("gtk-media-play","execute","Execute report"); //mainToolbar.Insert (btn,mainToolbar.NItems); mainPropertygrid.LoadMonoreportsExtensions(); designService.Report = startReport; }
public static void ExportToPdf(this Report report ,string path) { report.EvalDataSource(); double unitMultiplier = CairoExtensions.UnitMultiplier; double realFontMultiplier = CairoExtensions.RealFontMultiplier; ReportRenderer renderer = new ReportRenderer (); renderer.ResolutionX = 72; using (PdfSurface pdfSurface = new PdfSurface ( path,report.WidthWithMargins * renderer.UnitMultipilier, report.HeightWithMargins * renderer.UnitMultipilier)) { Cairo.Context cr = new Cairo.Context (pdfSurface); cr.Antialias = Antialias.None; renderer.Context = cr; renderer.RegisterRenderer (typeof(TextBlock), new TextBlockRenderer ()); renderer.RegisterRenderer (typeof(Line), new LineRenderer ()); PixbufRepository pbr = new PixbufRepository(); pbr.Report = report; renderer.RegisterRenderer (typeof(Image), new ImageRenderer (){PixbufRepository = pbr}); SectionRenderer sr = new SectionRenderer(); renderer.RegisterRenderer(typeof(ReportHeaderSection), sr); renderer.RegisterRenderer(typeof(ReportFooterSection), sr); renderer.RegisterRenderer(typeof(DetailSection), sr); renderer.RegisterRenderer(typeof(PageHeaderSection), sr); renderer.RegisterRenderer(typeof(PageFooterSection), sr); MonoReports.Model.Engine.ReportEngine engine = new MonoReports.Model.Engine.ReportEngine (report,renderer); engine.Process (); Cairo.Context cr1 = new Cairo.Context (pdfSurface); renderer.Context = cr1; cr1.Translate(report.Margin.Left * renderer.UnitMultipilier,report.Margin.Top * renderer.UnitMultipilier); engine.RenderPages(renderer,report); pdfSurface.Finish (); (cr as IDisposable).Dispose (); (cr1 as IDisposable).Dispose (); } CairoExtensions.UnitMultiplier = unitMultiplier; CairoExtensions.RealFontMultiplier = realFontMultiplier; }