Example #1
0
        public async Task <IActionResult> TestTemplate()
        {
            try
            {
                // *************************************************************
                // Create output using json and mustache template
                // *************************************************************
                RenderRequest request = new RenderRequest()
                {
                    JsonString  = "{\"title\": \"Sample Template\", \"name\": \"McTesty\"}",
                    RenderJsUrl = _configuration.GetSection("Constants").GetSection("RenderJsUrl").Value,
                    Template    = _configuration.GetSection("Constants").GetSection("SampleTemplate").Value
                };

                string result = await TemplateHelper.RenderDocument(_nodeServices, request);

                // *************************************************************
                // Convert results to Pdf
                // *************************************************************
                PdfRequest pdfRequest = new PdfRequest()
                {
                    Html        = "<h1>" + result + "<h1>",
                    PdfFileName = "TestTemplate"
                };

                byte[] pdfResponse = PdfDocument.BuildPdf(_configuration, pdfRequest);

                return(File(pdfResponse, "application/pdf"));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        static void Main(string[] args)
        {
            if (args.Length < 2)
            {
                Console.WriteLine("Please specify file and web-service url to convert...");
                return;
            }

            // read file content
            string filename = args[0];
            Stream fs       = File.OpenRead(filename);

            string url = args[1];

            MemoryStream outstream = new MemoryStream();
            PdfRequest   request   = new PdfRequest(fs, ".pptx", outstream);

            SPSite site = new SPSite(url);

            IAsyncResult result = request.BeginConvert(SPServiceContext.GetContext(site), null, null);

            // Use the EndConvert method to get the result.
            request.EndConvert(result);

            string result_file = Path.GetDirectoryName(filename) + "\\" + Path.GetFileNameWithoutExtension(filename) + ".pdf";

            using (FileStream fs1 = new FileStream(result_file, FileMode.Create))
            {
                outstream.Position = 0;
                outstream.CopyTo(fs1);
                fs1.Flush();
            }
            fs.Close();
        }
        private OASResponse ConvertPPTImmediately(OASModels.ConversionSettings settings, SPUserToken userToken)
        {
            OASResponse oasResponse = new OASResponse();

            using (SPSite site = (userToken == null ? new SPSite(ConfigurationManager.AppSettings["SiteUrl"]) : new SPSite(ConfigurationManager.AppSettings["SiteUrl"], userToken)))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    byte[]       input     = Convert.FromBase64String(settings.Content);
                    MemoryStream outstream = new MemoryStream();

                    try
                    {
                        Microsoft.Office.Server.PowerPoint.Conversion.FixedFormatSettings ppsettings = FillPowerPointConversionOptions(settings.Options);

                        PdfRequest request = new PdfRequest(new MemoryStream(input), ".pptx", ppsettings, outstream);

                        IAsyncResult result = request.BeginConvert(SPServiceContext.GetContext(site), null, null);

                        // Use the EndConvert method to get the result.
                        request.EndConvert(result);

                        oasResponse.Content   = Convert.ToBase64String(outstream.ToArray());
                        oasResponse.ErrorCode = OASErrorCodes.Success;
                    }
                    catch (Exception ex)
                    {
                        oasResponse.ErrorCode = OASErrorCodes.ErrFailedConvert;
                        oasResponse.Message   = ex.Message;
                    }
                }
            }

            return(oasResponse);
        }
Example #4
0
        public async Task <IActionResult> GetSeniorityListPdf([FromBody] string seniorityListJson, [FromRoute] string name)
        {
            try
            {
                name = CleanName(name);

                string fileName = name + ".pdf";
                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}]", fileName);

                // *************************************************************
                // Create output using json and mustache template
                // *************************************************************
                if (seniorityListJson == "[]")
                {
                    seniorityListJson = @"{""Empty"": ""true""}";
                }

                HtmlRequest request = new HtmlRequest()
                {
                    JsonString  = seniorityListJson,
                    RenderJsUrl = _configuration.GetSection("Constants").GetSection("RenderJsUrl").Value,
                    Template    = _configuration.GetSection("Constants").GetSection("SeniorityListTemplate").Value
                };

                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Render Html", fileName);
                string result = await TemplateHelper.RenderDocument(_nodeServices, request);

                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Html Length: {1}", fileName, result.Length);

                // *************************************************************
                // Convert results to Pdf
                // *************************************************************
                PdfRequest pdfRequest = new PdfRequest()
                {
                    Html        = result,
                    RenderJsUrl = _configuration.GetSection("Constants").GetSection("PdfJsUrl").Value,
                    PdfFileName = fileName
                };

                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Gen Pdf", fileName);
                byte[] pdfResponseBytes = await PdfDocument.BuildPdf(_nodeServices, pdfRequest, true);

                // convert to string and log
                string pdfResponse = System.Text.Encoding.Default.GetString(pdfResponseBytes);
                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Pdf Length: {1}", fileName, pdfResponse.Length);

                _logger.LogInformation("GetSeniorityListPdf [FileName: {0}] - Done", fileName);
                return(File(pdfResponseBytes, "application/pdf", fileName));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        private OASResponse StartPPTConversion(OASModels.ConversionSettings settings, SPUserToken userToken)
        {
            OASResponse oasResponse = new OASResponse();

            using (SPSite site = (userToken == null ? new SPSite(ConfigurationManager.AppSettings["SiteUrl"]) : new SPSite(ConfigurationManager.AppSettings["SiteUrl"], userToken)))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    try
                    {
                        web.AllowUnsafeUpdates = true;

                        byte[] input = Convert.FromBase64String(settings.Content);

                        SPFolder lib = GetOASLibrary(web);

                        //add source file to library
                        string source  = Guid.NewGuid().ToString();
                        SPFile srcfile = lib.Files.Add(source, input, true);

                        string dest = source + EXTENSION;


                        //Set up the job
                        MemoryStream ms = new MemoryStream();
                        Microsoft.Office.Server.PowerPoint.Conversion.FixedFormatSettings ppsettings = FillPowerPointConversionOptions(settings.Options);

                        PdfRequest request = new PdfRequest(new MemoryStream(input), ".pptx", ppsettings, ms);

                        PPTJob job = new PPTJob();
                        job.source  = source;
                        job.dest    = dest;
                        job.web     = web;
                        job.output  = ms;
                        job.request = request;

                        IAsyncResult result = request.BeginConvert(SPServiceContext.GetContext(web.Site), PPTConversionFinished, job);

                        // put file to the processing list
                        AddFileToList(web, job.jobId.ToString(), dest, DocType.PPTX);

                        oasResponse.FileId    = job.jobId.ToString();
                        oasResponse.ErrorCode = OASErrorCodes.Success;
                    }
                    catch (Exception ex)
                    {
                        oasResponse.ErrorCode = OASErrorCodes.ErrFailedConvert;
                        oasResponse.Message   = ex.Message;
                    }
                }
            }

            return(oasResponse);
        }
        public async Task <Stream> GeneratePdfFromHtmlAsync(PdfRequest request,
                                                            CancellationToken cancellationToken = default)
        {
            await using var browser = await ConnectBrowserAsync();

            await using var page = await browser.NewPageAsync();

            await SetupPageAsync(request, page);

            return(await page.PdfStreamAsync(request.PdfOptions ?? PdfRequest.DefaultPdfOptions));
        }
Example #7
0
        public IActionResult TestPdf()
        {
            PdfRequest pdfRequest = new PdfRequest()
            {
                Html        = "<h1>Hello World<h1>",
                PdfFileName = "HelloWorld"
            };

            byte[] pdfResponse = PdfDocument.BuildPdf(_configuration, pdfRequest);

            return(File(pdfResponse, "application/pdf"));
        }
Example #8
0
        public async Task <IActionResult> TestPdf()
        {
            PdfRequest pdfRequest = new PdfRequest()
            {
                Html        = "<h1>Hello World<h1>",
                RenderJsUrl = _configuration.GetSection("Constants").GetSection("PdfJsUrl").Value,
                PdfFileName = "HelloWorld"
            };

            byte[] pdfResponse = await PdfDocument.BuildPdf(_nodeServices, pdfRequest);

            return(File(pdfResponse, "application/pdf"));
        }
        private async Task SetupPageAsync(PdfRequest request, Page page)
        {
            if (request.Options?.EnableJavascript != null)
            {
                await page.SetJavaScriptEnabledAsync(request.Options.EnableJavascript);
            }

            await page.SetContentAsync(request.Html, new NavigationOptions
            {
                WaitUntil = new[] { WaitUntilNavigation.Networkidle0 },
                Timeout   = _settings.TimeoutSeconds * 1000,
            });

            if (request.Options?.AddScriptTags is { Count : > 0 })
Example #10
0
        public IActionResult ConvertHtml([FromBody] PdfRequest request)
        {
            if (this.ModelState.IsValid)
            {
                var stream = _pdfService.ConvertHtml(request.HtmlText);

                var fileName = string.IsNullOrEmpty(request.FileName)
                                        ? string.Empty
                                        : Path.ChangeExtension(request.FileName, "pdf");

                return(File(stream, "application/pdf", fileName));
            }

            return(BadRequest(this.ModelState));
        }
Example #11
0
        public async Task <IActionResult> GetWebPageAsPdf([FromRoute] Int32 version, PdfRequest request)
        {
            try
            {
                var cancel = Request.HttpContext.RequestAborted;
                var shot   = await _shooterManager.ShotPdfAsync(request.ToShotOptions(), cancel);

                return(File(shot.Bytes, shot.MimeType, shot.FileName));
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, "Error on getting pdf screen shot");
                return(StatusCode(500));
            }
        }
Example #12
0
        public async Task <IActionResult> TestPdf()
        {
            string options = @"{""height"": ""10.5in"",""width"": ""8in"",""orientation"": ""portrait""}";

            PdfRequest request = new PdfRequest()
            {
                Html     = "<h1>Hello World<h1>",
                Options  = options,
                PdfJsUrl = _configuration.GetSection("Constants").GetSection("PdfJsUrl").Value
            };

            JsonResponse result = await PdfDocument.BuildPdf(_nodeServices, request);

            return(File(result.Data, "application/pdf"));
        }
Example #13
0
        private async Task <string> SavePdf(PdfRequest request, HtmlToPdfDocument pdf)
        {
            string fileName = Path.ChangeExtension(request.FileName, ".pdf");

            using (var pdfStream = new MemoryStream(_converter.Convert(pdf)))
            {
                var httpHeader = new BlobHttpHeaders()
                {
                    ContentType     = "application/pdf",
                    ContentEncoding = "utf-8",
                };

                await _storageService.UploadFromStream(request.BlobContainer, fileName, pdfStream, httpHeader);
            }

            return(fileName);
        }
Example #14
0
        public async Task <ActionResult> GeneratePdf(PdfRequest request,
                                                     string suggestFilename = "generated.pdf",
                                                     CancellationToken cancellationToken = default)
        {
            try
            {
                var stream = await _pdfGenerator.GeneratePdfFromHtmlAsync(request, cancellationToken);

                return(File(
                           stream,
                           MediaTypeNames.Application.Pdf,
                           enableRangeProcessing: true,
                           fileDownloadName: suggestFilename
                           ));
            }
            catch (Exception e)
            {
                return(Problem(title: "Failed to generate PDF", detail: e.Message,
                               statusCode: StatusCodes.Status503ServiceUnavailable));
            }
        }
Example #15
0
        public async Task <IActionResult> TestTemplate()
        {
            try
            {
                // *************************************************************
                // Create output using json and mustache template
                // *************************************************************
                RenderRequest request = new RenderRequest()
                {
                    JsonString  = "{\"title\": \"Sample Template\", \"name\": \"McTesty\"}",
                    RenderJsUrl = _configuration.GetSection("Constants").GetSection("RenderJsUrl").Value,
                    Template    = _configuration.GetSection("Constants").GetSection("SampleTemplate").Value
                };

                string result = await TemplateHelper.RenderDocument(_nodeServices, request);

                // *************************************************************
                // Convert results to Pdf
                // *************************************************************
                string options = @"{""height"": ""10.5in"",""width"": ""8in"",""orientation"": ""portrait""}";

                PdfRequest pdfRequest = new PdfRequest()
                {
                    Html     = "<h1>" + result + "<h1>",
                    Options  = options,
                    PdfJsUrl = _configuration.GetSection("Constants").GetSection("PdfJsUrl").Value
                };

                JsonResponse jsonResult = await PdfDocument.BuildPdf(_nodeServices, pdfRequest);

                return(File(jsonResult.Data, "application/pdf"));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
 public DimensionBuilder(PdfRequest request)
 {
     this.Request = request;
     this.Request.Dimensions ??= new DocumentDimensions();
 }
Example #17
0
 public DocumentBuilder(PdfRequest request)
 {
     this.Request = request;
     this.Request.Content ??= new DocumentRequest();
 }
Example #18
0
 public ConfigBuilder(PdfRequest request)
 {
     this.Request = request;
     this.Request.Config ??= new HttpMessageConfig();
 }