Beispiel #1
0
        /// <summary>
        /// Obtiene la estructura de la información necesaria para consumir el servicio de Creación de PDF
        /// </summary>
        /// <param name="respuestasProveedores"></param>
        /// <returns></returns>
        private async Task <EstructuraDatosPDF> GetEstructuraDatosPDF(List <RespuestaCotizacion> respuestasProveedores)
        {
            if (!respuestasProveedores.Any())
            {
                //TODO: generar informe de error.
                return(null);
            }

            //Genero el cliente para el PDF
            var cliente = new ClientePDF();
            //Establezco la información general de la cotizacion
            var infoCotizacionPDF = new InfoGeneralCotizacion();

            var cotizaciones = await GetCotizacionesPDF(respuestasProveedores, infoCotizacionPDF, cliente);


            var datosPDF = new EstructuraDatosPDF()
            {
                Cliente               = cliente,
                Cotizaciones          = cotizaciones.ToList(),
                InfoGeneralCotizacion = infoCotizacionPDF
            };


            return(datosPDF);
        }
Beispiel #2
0
        public async Task <IActionResult> CreatePDF(EstructuraDatosPDF datosPDF)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            //Asignación de Logo
            datosPDF.InfoGeneralCotizacion.Logo = Path.Combine(Directory.GetCurrentDirectory(), "assets", "red.png");
            bool result = await CreatePDfAsync(datosPDF).ConfigureAwait(false);

            if (result)
            {
                return(Ok(@"C:\PDFCreator\" + datosPDF.InfoGeneralCotizacion.Referencia + ".pdf"));
            }

            return(BadRequest());
        }
Beispiel #3
0
        private async Task <bool> CreatePDfAsync(EstructuraDatosPDF datosPDF)
        {
            var globalSettings = new GlobalSettings
            {
                ColorMode   = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize   = PaperKind.A4,
                Margins     = new MarginSettings {
                    Top = 10
                },
                DocumentTitle = "PDF Report",
                Out           = @"C:\PDFCreator\" + datosPDF.InfoGeneralCotizacion.Referencia + ".pdf"
            };

            var templateGenerator = new TemplateGenerator(datosPDF);
            var objectSettings    = new ObjectSettings
            {
                PagesCount     = true,
                HtmlContent    = templateGenerator.GetHTMLString(),
                WebSettings    = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "styles.css") },
                HeaderSettings = { FontName = "Arial", FontSize = 9, Right = "Page [page] of [toPage]", Line = true },
                FooterSettings = { FontName = "Arial", FontSize = 9, Line = true, Center = "Report Footer" }
            };

            var pdf = new HtmlToPdfDocument()
            {
                GlobalSettings = globalSettings,
                Objects        = { objectSettings }
            };

            try
            {
                await Task.Run(() => _converter.Convert(pdf)).ConfigureAwait(false);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Beispiel #4
0
 public TemplateGenerator(EstructuraDatosPDF datos)
 {
     this.datos = datos;
 }