Exemplo n.º 1
0
        public async Task <IActionResult> Get()
        {
            var html = await RazorTemplateEngine.RenderAsync("~/Views/PdfTemplate.cshtml");

            var rs = new LocalReporting()
                     .KillRunningJsReportProcesses()
                     .UseBinary(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? JsReportBinary.GetBinary() : jsreport.Binary.Linux.JsReportBinary.GetBinary())
                     .Configure(cfg => cfg.AllowedLocalFilesAccess().FileSystemStore().BaseUrlAsWorkingDirectory())
                     .AsUtility()
                     .Create();

            var generatedPdf = await rs.RenderAsync(new RenderRequest
            {
                Template = new Template
                {
                    Recipe  = Recipe.ChromePdf,
                    Engine  = Engine.None,
                    Content = html,
                    Chrome  = new Chrome
                    {
                        MarginTop    = "10",
                        MarginBottom = "10",
                        MarginLeft   = "50",
                        MarginRight  = "50"
                    }
                }
            });

            return(File(generatedPdf.Content, generatedPdf.Meta.ContentType, "GeneratedPdfFile.pdf"));
        }
Exemplo n.º 2
0
        public async Task <Report> Render <T>(string template, string format, T content)
        {
            var rs = new LocalReporting()
                     .UseBinary(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ?
                                jsreport.Binary.JsReportBinary.GetBinary() :
                                jsreport.Binary.Linux.JsReportBinary.GetBinary())
                     .AsUtility()
                     .Create();

            var report = await rs.RenderAsync(new RenderRequest
            {
                Template = new Template
                {
                    Recipe  = MapFormatToRecipe(format),
                    Engine  = Engine.Handlebars,
                    Content = template
                },
                Data = new
                {
                    trades = content
                }
            });

            return(report);
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            try
            {
                //Configure the Local JsReportServer as utility
                //This would save templates in the running application directory (bin/debug)
                var rs = new LocalReporting()
                         .RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
                         .KillRunningJsReportProcesses()
                         .UseBinary(JsReportBinary.GetBinary())
                         .Configure(cfg => cfg.AllowedLocalFilesAccess().FileSystemStore().BaseUrlAsWorkingDirectory())
                         .AsUtility()
                         .Create();


                //Render the invoice template as PDF, by default is renders as portrait.
                //If you want to render as landscape, set landscape=true in config.json file of invoice template
                //Here we are using saved templates in local server.
                Console.WriteLine("Rendering localy stored template jsreport/data/templates/Invoice into invoice.pdf");
                var invoiceReport = rs.RenderByNameAsync("Invoice", InvoiceData).Result;
                invoiceReport.Content.CopyTo(File.OpenWrite("invoice.pdf"));


                //Render the sample template as PDF, by default is renders as portrait.
                //If you want to render as landscape, set landscape=true in below template object.
                //Here we are managing template from our code
                Console.WriteLine("Rendering custom report fully described through the request object into customReport.pdf");
                var customReport = rs.RenderAsync(CustomRenderRequest).Result;
                customReport.Content.CopyTo(File.OpenWrite("customReport.pdf"));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <IHttpActionResult> Post(CertificateGeneratorDTO payload)
        {
            var ex  = new Exception();
            var msg = string.Empty;

            try
            {
                var rs = new LocalReporting().UseBinary(JsReportBinary.GetBinary())
                         .Configure(cfg => cfg.AllowedLocalFilesAccess().BaseUrlAsWorkingDirectory())
                         .AsUtility().Create();

                var report = await rs.RenderAsync(new RenderRequest()
                {
                    Template = new Template()
                    {
                        Recipe  = Recipe.PhantomPdf,
                        Engine  = Engine.Handlebars,
                        Content = "Hello from pdf"
                    }
                });

                return(Ok(new { data = string.Empty, msg }));
            }
            catch (Exception caughtEx)
            {
                return(BadRequest(msg));
            }
        }
Exemplo n.º 5
0
        public void GenerateEventReport(int eventId)
        {
            var rs = new LocalReporting()
                     .RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
                     .KillRunningJsReportProcesses()
                     .UseBinary(JsReportBinary.GetBinary())
                     .Configure(cfg => cfg.AllowedLocalFilesAccess().FileSystemStore().BaseUrlAsWorkingDirectory())
                     .AsUtility()
                     .Create();

            var r = new PaxResult {
                pos = 1, number = 25, class_name = "GS", car = "GTI", name = "Aaron Hall", best_run = 33.456, pax_time = 30.234, diff = 0, from_first = 0, points = 10000
            };

            var p = new Pax {
                year = 2019, event_num = 5, date = "8/19/2018", drivers = new List <PaxResult>()
            };

            for (int i = 0; i < 200; ++i)
            {
                p.drivers.Add(r);
            }

            var json = JsonConvert.SerializeObject(p);

            var invoiceReport = rs.RenderByNameAsync("EventPaxReport", json).Result;

            invoiceReport.Content.CopyTo(File.OpenWrite("event.pdf"));
            invoiceReport.Content.Close();
            rs.KillAsync();
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Initializing local jsreport.exe utility");
            var rs = new LocalReporting()
                     .RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
                     .KillRunningJsReportProcesses()
                     .UseBinary(JsReportBinary.GetBinary())
                     .Configure(cfg => cfg.AllowLocalFilesAccess().FileSystemStore().BaseUrlAsWorkingDirectory())
                     .AsWebServer()
                     .Create();

            rs.StartAsync().Wait();
            Console.ReadKey();

            Console.WriteLine("Rendering localy stored template jsreport/data/templates/Invoice into invoice.pdf");
            var invoiceReport = rs.RenderByNameAsync("Invoice", InvoiceData).Result;

            invoiceReport.Content.CopyTo(File.OpenWrite("invoice.pdf"));

            Console.WriteLine("Rendering custom report fully described through the request object into customReport.pdf");
            var customReport = rs.RenderAsync(CustomRenderRequest).Result;

            customReport.Content.CopyTo(File.OpenWrite("customReport.pdf"));

            byte[] pdfByte = ReadFully(customReport.Content);
        }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            var jsreportDirectory = Path.Combine(System.Environment.CurrentDirectory.Substring(0, System.Environment.CurrentDirectory.LastIndexOf("bin")), "jsreport");

            Console.WriteLine("Starting jsreport in " + jsreportDirectory);

            var rs = new LocalReporting()
                     .UseBinary(JsReportBinary.GetBinary())
                     .KillRunningJsReportProcesses()
                     .RunInDirectory(jsreportDirectory)
                     .Configure(cfg => cfg.CreateSamples()
                                .FileSystemStore()
                                .BaseUrlAsWorkingDirectory())
                     .AsWebServer()
                     .RedirectOutputToConsole()
                     .Create();

            rs.StartAsync().Wait();

            Process.Start(new ProcessStartInfo("cmd", $"/c start http://localhost:5488"));

            Console.ReadKey();

            rs.KillAsync().Wait();
        }
Exemplo n.º 8
0
        public async Task <string> Generate(object data)
        {
            string msg = "success";

            try
            {
                System.Diagnostics.Debug.WriteLine("Initializing local jsreport.exe utility");

                Console.WriteLine("Initializing local jsreport.exe utility");
                var rs = new LocalReporting()
                         .RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
                         .KillRunningJsReportProcesses()
                         .UseBinary(JsReportBinary.GetBinary())
                         .Configure(cfg => cfg.AllowedLocalFilesAccess().FileSystemStore().BaseUrlAsWorkingDirectory())
                         .AsUtility()
                         .Create();

                Console.WriteLine("Rendering localy stored template jsreport/data/templates/Invoice into invoice.pdf");
                var studentReport = rs.RenderByNameAsync("ReportTemplate", data).Result;

                using (var fs = File.Create("ReportCard\\StudentReport.pdf"))
                {
                    studentReport.Content.CopyTo(fs);
                    fs.Close();
                }
            }
            catch (Exception ex)
            {
                msg = ex.Message;
            }
            return(msg);
        }
        public HttpResponseMessage Get()
        {
            var rs = new LocalReporting().UseBinary(JsReportBinary.GetBinary()).AsUtility().Create();



            var report = rs.RenderAsync(new RenderRequest()
            {
                Template = new Template()
                {
                    Recipe  = Recipe.PhantomPdf,
                    Engine  = Engine.Handlebars,
                    Content = "Hello from pdf, {{message}}",
                    Phantom = new Phantom {
                        Header = "<div style='text-align:center'>Page number {#pageNum}/{#numPages}</div>"
                    }
                },
                Data = new
                {
                    message = "B&A Migrando a jsreport for .NET!!!"
                }
            }).Result;



            string nombre = "Test";
            HttpResponseMessage response = DescargarPdf(ReadFully(report.Content), nombre);

            return(response);
        }
Exemplo n.º 10
0
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            var rs = new LocalReporting()
                     .UseBinary(JsReportBinary.GetBinary())
                     .TempDirectory(Path.Combine((string)AppDomain.CurrentDomain.GetData("DataDirectory"), "jsreport-temp"))
                     .AsUtility()
                     .Create();

            filters.Add(new JsReportFilterAttribute(rs));
            filters.Add(new HandleErrorAttribute());
        }
        public HttpResponseMessage GetMultiple()
        {
            var           rs       = new LocalReporting().UseBinary(JsReportBinary.GetBinary()).AsUtility().Create();
            List <string> mensajes = new List <string> {
                "1", "2", "3"
            };

            List <Stream> streamPdfs = new List <Stream>();


            foreach (var m in mensajes)
            {
                var report = rs.RenderAsync(new RenderRequest()
                {
                    Template = new Template()
                    {
                        Recipe  = Recipe.PhantomPdf,
                        Engine  = Engine.Handlebars,
                        Content = "Hello from pdf, {{message}}",
                        Phantom =
                            new Phantom {
                            Header = "B&A Systems SAS",
                            Footer = "<div style='text-align:center'>Page number {#pageNum}/{#numPages}</div>",
                        }
                    },
                    Data = new
                    {
                        message = $"B&A Migrando a jsreport for .NET!!! {m}"
                    }
                }).Result;

                streamPdfs.Add(report.Content);
            }
            byte[] result = null;

            using (MemoryStream ms = new MemoryStream())
            {
                Document pdfDoc   = new Document(PageSize.A4);
                PdfCopy  pdfUnido = new PdfCopy(pdfDoc, ms);
                pdfDoc.Open();
                streamPdfs.ForEach(item =>
                {
                    var itemPdf = new PdfReader(item);
                    pdfUnido.AddDocument(itemPdf);
                });
                pdfDoc.Close();
                result = ms.ToArray();
                result = ms.ToArray();
            }
            string nombre = "Test Multiple";
            HttpResponseMessage response = DescargarPdf(result, nombre);

            return(response);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Called when sending a complaint about a player to the local server administrators.
        /// </summary>
        /// <param name="ev">The <see cref="LocalReportingEventArgs"/> instance.</param>
        public static void OnLocalReporting(LocalReportingEventArgs ev)
        {
#if DEBUG
            void LogL(string s) =>
            Log.Debug($"{nameof(Server)}-{nameof(OnLocalReporting)}: {s}", true);

            LogL($"Original reason: {ev.Reason}");
            ev.Reason = "some random reason for debug";
            LogL($"Replaced reason: {ev.Reason}");
            LogL($"{nameof(ev.Target)} is null: {ev.Target == null}");
            LogL($"{nameof(ev.Issuer)} is null: {ev.Issuer == null}");
#endif
            LocalReporting.InvokeSafely(ev);
        }
Exemplo n.º 13
0
        static async task Main(string[] args)
        {
            var rs = new LocalReporting()
                     .UseBinary(JsReportBinary.GetBinary())
                     .RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
                     .KillRunningJsReportProcesses()
                     .Configure(cfg => cfg.CreateSamples().FileSystemStore())
                     .AsWebServer()
                     .RedirectOutputToConsole()
                     .Create();


            await rs.StartAsync();

            Console.ReadKey();
            await rs.KillAsync();
        }
Exemplo n.º 14
0
        static void Main(string[] args)
        {
            Console.WriteLine("Rendering template");

            var rs = new LocalReporting()
                     .UseBinary(JsReportBinary.GetBinary())
                     .KillRunningJsReportProcesses()
                     .Configure(cfg => cfg.FileSystemStore().BaseUrlAsWorkingDirectory())
                     .AsUtility()
                     .Create();

            var report = rs.RenderByNameAsync("myTemplate", null).Result;

            using (var fs = File.Create("test.pdf"))
            {
                report.Content.CopyTo(fs);
            }
        }
Exemplo n.º 15
0
        public async Task BasicTest()
        {
            var context = new DefaultHttpContext();

            context.Response.Body = new MemoryStream();
            var rs = new LocalReporting().UseBinary(JsReportBinary.GetBinary()).AsUtility().Create();

            var rd = new RequestDelegate(async(ctx) =>
            {
                context.JsReportFeature().Engine(Engine.None).Recipe(Recipe.Html);
                await ctx.Response.WriteAsync("Hello");
            });

            var middleware = new JsReportMiddleware(rd, rs);

            await middleware.Invoke(context);

            context.Response.Body.Seek(0, SeekOrigin.Begin);
            new StreamReader(context.Response.Body).ReadToEnd().ShouldBe("Hello");
        }
Exemplo n.º 16
0
        public async Task <ActionResult <string> > GeneratePdf(string semestre)
        {
            var rs           = new LocalReporting().UseBinary(JsReportBinary.GetBinary()).AsUtility().Create();
            var templateHtml = @"<h1 style='color: #5e9ca0;'>Hola</h1>
                                <h2> &nbsp;</h2>
                                <table>
                                <thead>
                                <tr>
                                <td> Example </td>
                                <td>Default</td>
                                </tr>
                                </thead>
                                <tbody>
                                <tr>
                                <td> {{nombre}}</td>
                                <td> {{semestre}}</td>
                                </tr>
                                </tbody>
                                </table>
                                <p><strong>&nbsp;</strong></p>";
            var report       = await rs.RenderAsync(new RenderRequest()
            {
                Template = new Template
                {
                    Content = templateHtml,

                    Engine = Engine.Handlebars,
                    Recipe = Recipe.ChromePdf
                },
                Data = new
                {
                    nombre   = $"Programación Web - Unicesar!!!",
                    semestre = semestre
                }
            });

            return(new FileStreamResult(report.Content, "application/pdf"));
        }
Exemplo n.º 17
0
        static void Main(string[] args)
        {
            var rs = new LocalReporting()
                     .UseBinary(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ?
                                jsreport.Binary.JsReportBinary.GetBinary() :
                                jsreport.Binary.Linux.JsReportBinary.GetBinary())
                     .AsUtility()
                     .Create();

            var report = rs.RenderAsync(new RenderRequest()
            {
                Template = new Template()
                {
                    Recipe  = Recipe.PhantomPdf,
                    Engine  = Engine.None,
                    Content = "Hello"
                }
            }).Result;

            var content = new StreamReader(report.Content).ReadToEnd();

            Console.WriteLine(content);
        }
Exemplo n.º 18
0
        public async Task <IActionResult> Localreport()
        {
            var header = await JsReportMVCService.RenderViewToStringAsync(HttpContext, RouteData, "Header", new { });

            var footer = await JsReportMVCService.RenderViewToStringAsync(HttpContext, RouteData, "Footer", new { });

            var body = await JsReportMVCService.RenderViewToStringAsync(HttpContext, RouteData, "Invoice", new { });

            var rs = new LocalReporting().UseBinary(JsReportBinary.GetBinary()).AsUtility().Create();

            var report = await rs.RenderAsync(new RenderRequest()
            {
                Template = new Template()
                {
                    Recipe  = Recipe.PhantomPdf,
                    Engine  = Engine.None,
                    Content = body
                }
            });

            HttpContext.JsReportFeature()
            //.DebugLogsToResponse()
            .Recipe(Recipe.PhantomPdf)
            .Configure((r) => r.Template.Phantom = new Phantom
            {
                Header          = header,
                Footer          = footer,
                Format          = PhantomFormat.A4,
                Margin          = "0cm",
                BlockJavaScript = false
            })

            .OnAfterRender((r) =>
                           HttpContext.Response.Headers["Content-Disposition"] = "attachment; filename=\"myReport.pdf\""
                           );
            return(View("../Report/Invoice", InvoiceModel.Example()));
        }
Exemplo n.º 19
0
 /// <summary>
 /// Called when sending a complaint about a player to the local server administrators.
 /// </summary>
 /// <param name="ev">The <see cref="LocalReportingEventArgs"/> instance.</param>
 public static void OnLocalReporting(LocalReportingEventArgs ev) => LocalReporting.InvokeSafely(ev);
Exemplo n.º 20
0
        GeneratePdf(string solicitud2)
        {
            var       response  = _service.BuscarSolicitud(solicitud2);
            Solicitud solicitud = new Solicitud();

            if (response.Error)
            {
            }
            else
            {
                solicitud = response.Solicitud;
            }
            var rs =
                new LocalReporting()
                .UseBinary(JsReportBinary.GetBinary())
                .AsUtility()
                .Create();
            var templateHtml =
                @"<html lang='en'>

<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <link href='https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css' rel='stylesheet'
        integrity='sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1' crossorigin='anonymous'>
    <title>Document</title>
</head>

<body>
    <div class='container'>
        <div>
            <form>
                <header style='text-align: center;'>
                    <h1>Consulta de solicitud</h1>
                </header>

                <div style='padding-top: 50px;'>

                </div>

                <div class='card'>
                    <table class='table table-striped table-bordered table-sm'>
                        <tbody>
                            <tr>
                                <td>ID</td>
                                <td>{{solicitud.Persona.Identificacion}}</td>
                            </tr>

                            <tr>
                                <td>Docente</td>
                                <td>{{solicitud.Persona.Nombre}} {{solicitud.Persona.Apellidos}}</td>
                            </tr>

                            <tr>
                                <td>Estado</td>
                                <div>
                                    <td>{{solicitud.Estado}}</td>
                                </div>
                            </tr>

                            <tr>
                                <td>Periodo Academico</td>
                                <td>{{solicitud.PeriodoAcademico.Periodo}} Corte: {{solicitud.PeriodoAcademico.Corte}}</td>
                            </tr>

                            <tr>
                                <td>Asignatura</td>
                                <td>{{solicitud.Asignatura.Nombre}}</td>
                            </tr>

                            <tr>
                                <td>Monitor</td>
                                <td>{{solicitud.Monitor}}</td>
                            </tr>

                            <tr>
                                <td>Cantidad Insumos</td>
                                <td>{{solicitud.CantidadInsumos}}</td>
                            </tr>
                            <tr>
                                <td>Fecha y hora solicitud</td>
                                <td>{{solicitud.SolicitudFecha}}</td>
                            </tr>
                            <tr>
                                <td>Fecha y Hora entrega</td>
                                <td>{{solicitud.Fecha}}</td>
                            </tr>
                        </tbody>
                    </table>
                </div>

                <table class='table'>
                    <thead>
                        <tr>
                            <th scope='col'>Items</th>
                            <th scope='col'>Descripción</th>
                            <th scope='col'>Marca</th>
                            <th scope='col'>Cantidad</th>
                        </tr>
                    </thead>
                    <tbody>
                        {{#each detalles}}
                            <tr>
                                <td> {{NumeroDetalle}} </td>
                                <td> {{Insumo.Descripcion}} </td>
                                <td> {{Insumo.Marca}} </td>
                                <td> {{Cantidad}} </td>
                            </tr>
                        {{/each}}
                    </tbody>
                </table>
            </form>
        </div>
    </div>
    <script src='https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js'
        integrity='sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW'
        crossorigin='anonymous'></script>
</body>

</html>";
            var report =
                await rs
                .RenderAsync(new RenderRequest()
            {
                Template =
                    new Template {
                    Content = templateHtml,
                    Engine  = Engine.Handlebars,
                    Recipe  = Recipe.ChromePdf
                },
                Data =
                    new {
                    nombre    = $"Programación Web - Unicesar!!!",
                    solicitud = solicitud,
                    detalles  = solicitud.Detalles
                }
            });

            return(new FileStreamResult(report.Content, "application/pdf"));
        }