コード例 #1
0
        public FileResult Download(string path)
        {
            var htmlToPdf = new HtmlToPdfConverter();

            var pdfContentType = "application/pdf";

            TempData.Keep();
            var sData = (dynamic)null;

            if (Session["sData"] == null)
            {
                sData            = TempData["html"];
                Session["sData"] = sData;
                return(File(htmlToPdf.GeneratePdf(sData, null), pdfContentType));
            }
            else
            {
                sData = Session["sData"];
                return(File(htmlToPdf.GeneratePdf(sData, null), pdfContentType));
            }


            //byte[] fileBytes = System.IO.File.ReadAllBytes(HttpContext.Server.MapPath("~/applicant/"+path));
            //string fileName = path;
            //MemoryStream workStream = new MemoryStream();
            //workStream.Write(fileBytes, 0, fileBytes.Length);
            //workStream.Position = 0;
            //return File(workStream.ToArray(), "application/pdf", fileName);
            //using (MemoryStream pdfStream = new MemoryStream())
            //{
            //    pdfStream.Write(fileBytes, 0, fileBytes.Length);
            //    pdfStream.Position = 0;
            //    return new FIle(pdfStream, "application/pdf");
            //}
        }
コード例 #2
0
        public FileContentResult pdf()
        {
            string html           = string.Empty;
            string uniqueId       = (string)Request.QueryString["a"];
            string page           = (string)Request.QueryString["page"];
            var    OS             = new OfficeSurveyModel();
            var    CL             = new commonLogic();
            var    htmlToPdf      = new HtmlToPdfConverter();
            var    pdfContentType = "application/pdf";

            try
            {
                OS.where     = " WHERE unique_id = '" + uniqueId + "'";
                CL.dataTable = OS.select();
                CL.pageType  = page;
                html         = CL.ViewHtml();
                string htmlContent = "<!DOCTYPE html><html lang='en'><head><style><style>body{font-family: 'Poppins', sans-serif;}.h5, h5 {font-size: 1rem; }hr{width: 100%;}hr {margin-top: 1rem;margin-bottom: 1rem;border: 0; border-top: 1px solid rgba(0, 0, 0, 0.1);}.col-md-12{width:100%;}.col-sm-8{width:60%; float:left;}.col-sm-4{width:40%;float:right;}</style></style></head><body>" + html + "</body></html>";

                //var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
                htmlToPdf.PageFooterHtml = $@"page <span class=""page""></span> of <span class=""topage""></span>";
                var    pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
                string fileName = CL.getFileName();
                return(File(pdfBytes, "application/pdf", fileName + ".pdf"));
            }
            catch (Exception e)
            {
                CL.getLog("Fail to generate PDF." + e);
                return(File(htmlToPdf.GeneratePdf("<b>Something Went wrong!!!</b>", null), pdfContentType));
            }
        }
コード例 #3
0
        public void exportPDF(string fileName, string Orientation, string html)
        {
            HtmlToPdfConverter pdf = new HtmlToPdfConverter();

            //Remove these control characters, they interfere with the formatting of the pdf document
            html = html.Replace("\n", "");
            html = html.Replace("\t", "");
            html = html.Replace("\r", "");
            switch (Orientation)
            {
            case "Portrait":
                pdf.Orientation = PageOrientation.Portrait;
                break;

            case "Landscape":
                pdf.Orientation = PageOrientation.Landscape;
                break;

            default:
                pdf.Orientation = PageOrientation.Default;
                break;
            }
            //In case needed for future
            //pdf.CustomWkHtmlArgs = "--margin-top 35 --header-spacing 0 --margin-left 0 --margin-right 0";
            pdf.Margins.Top    = 25;
            pdf.PageFooterHtml = createPDFFooter();
            var pdfBytes = pdf.GeneratePdf(createPDFScript() + html + "</body></html>");

            HttpContext.Current.Response.ContentType     = "application/pdf";
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
            HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".pdf");
            HttpContext.Current.Response.BinaryWrite(pdfBytes);
            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.End();
        }
コード例 #4
0
        private CustomFileDetails GetTemplatedLicenseForDownload(OrganizationLicense license, int providerOrgId, int consumerOrgId, string urlToSchema)
        {
            var result = new CustomFileDetails();

            // Get license template
            var template = _licenseTemplates.FirstOrDefault(i => i.ID == license.LicenseTemplateID.Value);

            // Get license document
            var licenseDocument = _licenseContentBuilder.GetLicenseContent(organizationLicenseId: license.ID);

            // Get schema file
            var schemaFile = _schemaFiles.FirstOrDefault(i => i.DataSchemaID == license.DataSchemaID);

            // Build content for templated license
            _licenseContentBuilder.InsertLicenseDetails(licenseDocument, urlToSchema, _config.DataLinkerHost, providerOrgId, consumerOrgId);

            // Generate pdf file with content
            var pdfDocument = new HtmlToPdfConverter {
                PageFooterHtml = _licenseContentBuilder.GetFooterText(license.Status, _config.DataLinkerHost)
            };
            var bytes = pdfDocument.GeneratePdf(licenseDocument.OuterXml);

            // Setup result
            result.Content  = bytes;
            result.MimeType = "application/pdf";
            result.FileName = $"{template.Name}.pdf";

            // Return result
            return(result);
        }
コード例 #5
0
        /// <summary>
        /// The method generates a sample pdf-file
        /// </summary>
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Document document = db.GetDocumentById(id);

            if (document == null)
            {
                return(HttpNotFound());
            }
            string correctHtml = document.Text;
            string htm         = "<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"/><title>Контракт</title></head><body>" + document.Text + "</body></html>";
            ///
            string       pattern = @"{{(?<val>.*?)}}";
            RegexOptions options = RegexOptions.Compiled | RegexOptions.Singleline;
            Regex        regex   = new Regex(pattern, options);
            Match        match   = regex.Match(htm);
            int          i       = 0;

            while (match.Success)
            {
                correctHtml = correctHtml.Replace("{{" + match.Groups["val"].Value + "}}", "______");
                match       = match.NextMatch();
                i++;
            }
            ///
            var htmlToPdf = new HtmlToPdfConverter();
            var pdfBytes  = htmlToPdf.GeneratePdf(correctHtml);

            return(File(pdfBytes, "application/pdf", "df"));
        }
コード例 #6
0
ファイル: UtilPDF.cs プロジェクト: elanofb/teste-neurovirtual
        public static bool gerarPDF(string htmlContent, string filename)
        {
            string pathPDF = filename;

            var htmlToPdf = new HtmlToPdfConverter();
            var margins   = new PageMargins();

            margins.Bottom    = 10;          // margins.Left = 5;margins.Right = 5;
            margins.Top       = 10;
            htmlToPdf.Margins = margins;
            htmlToPdf.CustomWkHtmlPageArgs = "--enable-smart-shrinking  --encoding <encoding>";
            htmlToPdf.PageFooterHtml       = "";
            //htmlToPdf.Orientation = NReco.PdfGenerator.PageOrientation.Portrait;
            htmlToPdf.Zoom = 1.0f;

            var conteudo = htmlToPdf.GeneratePdf(htmlContent, null);

            UtilIO.saveBytesToFile(pathPDF, conteudo, FileMode.Create);

            if (File.Exists(pathPDF))
            {
                return(true);
            }

            return(false);
        }
コード例 #7
0
        public ActionResult PrintResult(int?id, int?durid, string fname)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (durid == null || fname == "" || fname == null)
            {
                var durations = SystemHelper.GetAllCourseDuration((int)id);
                ViewBag.CourseId = id;
                ViewBag.durid    = new SelectList(durations, "DurationID", "DurationName");
                return(View());
            }
            dynamic course = SystemHelper.GetCourseObject((int)id);

            if (course == null)
            {
                return(HttpNotFound());
            }
            var objectName = course.GetType().Name.ToString();
            List <StudentRegistration> result = SystemHelper.GetCourseResultRegistrationByFaculty((int)id, (int)durid, fname);
            string     viewName      = @"..\Print\" + objectName + "ResultRegistration";
            string     htmlToConvert = SystemHelper.RenderViewAsString(viewName, result, this.ControllerContext);
            var        htmlToPdf     = new HtmlToPdfConverter();
            var        pdfBytes      = htmlToPdf.GeneratePdf(htmlToConvert);
            FileResult fileResult    = new FileContentResult(pdfBytes, "application/pdf")
            {
                FileDownloadName = fname + "-" + durid + ".pdf"
            };

            return(fileResult);
        }
コード例 #8
0
        private void printProduct(int productID)
        {
            string content = generateContent(loadProduct(productID), loadTemplate("content"));
            //kreira html

            var pdfCreator = new HtmlToPdfConverter();

            pdfCreator.Margins.Top    = 24;
            pdfCreator.Margins.Bottom = 15;
            pdfCreator.Margins.Left   = 10;
            pdfCreator.Margins.Right  = 10;
            pdfCreator.Size           = NReco.PdfGenerator.PageSize.A4;

            pdfCreator.PageHeaderHtml = getHeader();
            pdfCreator.PageFooterHtml = getFooter();

            var pdfBytes = pdfCreator.GeneratePdf(content);

            using (FileStream fs = new FileStream(Server.MapPath("~/pdf/product.pdf"), FileMode.Create, FileAccess.Write))
            {
                fs.Write(pdfBytes, 0, pdfBytes.Length);
                fs.Close();
            }

            Response.Redirect(ResolveUrl("~/pdf/product.pdf"));
        }
コード例 #9
0
ファイル: Utility.cs プロジェクト: mhamner/RockPlugins
        public static BinaryFile HtmlToPdf(string html, RockContext rockContext = null, string pdfFileName = "GeneratedPDF.pdf", PageMargins margins = null, PageOrientation orientation = PageOrientation.Default)
        {
            if (rockContext == null)
            {
                rockContext = new RockContext();
            }
            var htmlToPdf = new HtmlToPdfConverter();

            if (margins != null)
            {
                htmlToPdf.Margins = margins;
            }
            htmlToPdf.Orientation = orientation;

            using (MemoryStream msPDF = new MemoryStream(htmlToPdf.GeneratePdf(html)))
            {
                BinaryFile pdfBinary = new BinaryFile();
                pdfBinary.Guid             = Guid.NewGuid();
                pdfBinary.FileName         = pdfFileName;
                pdfBinary.MimeType         = "application/pdf";
                pdfBinary.BinaryFileTypeId = new BinaryFileTypeService(rockContext).Get(new Guid(Rock.SystemGuid.BinaryFiletype.DEFAULT)).Id;

                BinaryFileData pdfData = new BinaryFileData();
                pdfData.Content = msPDF.ToArray();

                pdfBinary.DatabaseData = pdfData;

                return(pdfBinary);
            }
        }
コード例 #10
0
        public HttpResponseMessage DownloadInvoice(PostDataEntity strHTML)
        {
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
            string fileNames             = "Invoice_" + DateTime.Now.ToString("yyyyMMddHHmmss");

            try
            {
                byte[] bytes;// = new byte[file.Length];
                var    htmlToPdf = new HtmlToPdfConverter();
                if (!String.IsNullOrEmpty(strHTML.htmlString))
                {
                    strHTML.htmlString = strHTML.htmlString.Replace("break-after: page", "page-break-after:always");
                }
                bytes            = htmlToPdf.GeneratePdf(strHTML.htmlString);
                response.Content = new ByteArrayContent(bytes);

                response.Content.Headers.Clear();
                response.Content.Headers.Add("Content-Disposition", "attachment; filename=" + fileNames + ".pdf");
                response.Content.Headers.Add("Content-Length", bytes.Length.ToString());
                response.Content.Headers.ContentType = new MediaTypeHeaderValue(MimeMapping.GetMimeMapping("application/pdf"));

                return(response);
            }
            catch (Exception ex)
            {
                // response.Message.Add(ex.Message);
            }
            return(response);
        }
コード例 #11
0
        public ActionResult ExportPdf(int quoteId)
        {
            var quote = _db.Quotes.First(q => q.Id == quoteId);
            var user  = _db.Users.First(u => u.UserName == quote.AssignedTo);
            var model = new QuotePdfViewModel()
            {
                Quote = quote,
                User  = user
            };
            var htmlContent = this.RenderViewToString("~/Areas/Sales/Views/Shared/PdfQuote2.cshtml", model);

            var htmlToPdf = new HtmlToPdfConverter
            {
                Size        = PageSize.A4,
                Orientation = PageOrientation.Portrait,
                Zoom        = 1.5F
            };

            byte[]     pdfBytes   = htmlToPdf.GeneratePdf(htmlContent);
            FileResult fileResult = new FileContentResult(pdfBytes, "application/pdf");

            fileResult.FileDownloadName = String.Format("{0}-Ponuda-{1}_{2}.pdf", quote.Organization.SubjectName, /*quote.QuoteLines.First(ql => ql.Service.ServiceType == Service.ServiceTypeEnum.Packages).Service.ServiceName*/
                                                        quote.QuoteLines.First(ql => ql.Service.ServiceType == Service.ServiceTypeEnum.Documents).Quantity, quote.ContractDuration);
            return(fileResult);
        }
コード例 #12
0
        public object GenerateReport(JObject data)
        {
            HtmlToPdfConverter test     = new HtmlToPdfConverter();
            string             filedata = File.ReadAllText(System.Web.HttpRuntime.BinDirectory + "substorage.html");

            filedata = Regex.Unescape(filedata);
            filedata = filedata.Replace(@"\", "");
            filedata = filedata.Replace("%MaterialCode%", (string)data["materialcode"]);
            filedata = filedata.Replace("%Quantity%", (string)data["issuequantity"]);
            filedata = filedata.Replace("%ReqDate%", DateTime.Now.ToString());
            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = connection;
                conn.Open();
                SqlCommand cmdCount = new SqlCommand("SELECT sub_storage_index from np_config;", conn);
                filedata = filedata.Replace("%Number%", cmdCount.ExecuteScalar().ToString());
            }
            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = connection;
                conn.Open();
                SqlCommand cmdCount = new SqlCommand("SELECT material_description from np_materials WHERE material_code='" + (string)data["materialcode"] + "'; ", conn);
                filedata = filedata.Replace("%MaterialDate%", (string)cmdCount.ExecuteScalar());
            }
            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = connection;
                conn.Open();
                SqlCommand cmdCount = new SqlCommand("SELECT employ_dept_cd from np_employ WHERE employ_pers_no='" + (string)data["issueto"] + "'; ", conn);
                filedata = filedata.Replace("%Dept", (string)cmdCount.ExecuteScalar() + " ");
            }
            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = connection;
                conn.Open();
                SqlCommand cmdCount = new SqlCommand("SELECT employ_loc_cd from np_employ WHERE employ_pers_no='" + (string)data["issueto"] + "'; ", conn);
                filedata = filedata.Replace("Loc%", " " + (string)cmdCount.ExecuteScalar());
            }
            string employname;

            using (SqlConnection conn = new SqlConnection())
            {
                conn.ConnectionString = connection;
                conn.Open();
                SqlCommand cmdCount = new SqlCommand("SELECT employ_name from np_employ WHERE employ_pers_no='" + (string)data["issueto"] + "'; ", conn);
                employname = (string)cmdCount.ExecuteScalar();
            }
            filedata = filedata.Replace("%RequistionBy%", (string)data["issueto"] + " - " + employname);
            var result = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new ByteArrayContent(test.GeneratePdf(filedata))
            };

            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = "RequistionMan.pdf"
            };
            return(result);
        }
コード例 #13
0
        private void MBckWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                var explorer = base.Context as Explorer;
                int i        = 1;
                mMailCount = explorer.CurrentFolder.Items.Count;
                foreach (var item in explorer.CurrentFolder.Items)
                {
                    if (!(item is MailItem))
                    {
                        continue;
                    }
                    var mail = item as MailItem;

                    if (string.IsNullOrEmpty(mail.HTMLBody))
                    {
                        continue;
                    }

                    var fileName = Path.Combine(DIR_PDF, string.Format(@"{0}_{1}.pdf", mail.ReceivedTime.ToString("yyyyMMddHHmmss"), mail.Subject));

                    var html = @"<?xml version=""1.0"" encoding=""UTF-8""?>
                 <!DOCTYPE html 
                     PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN""
                    ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"">
                 <html xmlns=""http://www.w3.org/1999/xhtml"" xml:lang=""en"" lang=""en"">
                    <head>
                        <title>Minimal XHTML 1.0 Document with W3C DTD</title>
                    </head>
                  <body>
                    " + mail.HTMLBody + "</body></html>";

                    var pdfDoc = new HtmlToPdfConverter
                    {
                        Margins = new PageMargins {
                            Bottom = 50, Left = 50, Right = 50, Top = 50
                        },
                        Size           = PageSize.A4,
                        PageHeaderHtml = string.Format(@"<h1>{0}</h1><h4>{1}({2})</h4><h5>收件时间:{3}</h5>", mail.Subject, mail.SenderName, mail.SenderEmailAddress, mail.ReceivedTime),
                        PageFooterHtml = string.Format(@"<h3><a href='http://www.mln.com'>{0}</a></h3>", "@Power by Mln.COM")
                    };

                    var pdfBytes = pdfDoc.GeneratePdf(html);

                    using (var file = new FileStream(fileName, FileMode.Create))
                    {
                        file.Write(pdfBytes, 0, (int)pdfBytes.Length);
                    }

                    mBckWorker.ReportProgress(i++);
                }
                e.Result = "";
            }
            catch (Exception ex)
            {
                e.Result = ex.Message;
            }
        }
コード例 #14
0
        public void GenerateFileByStringAndCover()
        {
            const string fileName = "GenerateFileByStringAndCover.pdf";

            HtmlToPdfConverter generator = new HtmlToPdfConverter();

            generator.GeneratePdf(HTML_CONTENT, HTML_CONTENT_COVER, Path.Combine(PDF_DIRECTORY, fileName));
        }
コード例 #15
0
ファイル: PaymentController.cs プロジェクト: avgrishin/ob
        public ActionResult getPdf1(int ID)
        {
            var q       = _paymentRepository.GetPayment(ID);
            var s       = RenderViewToString(ControllerContext, "doc1", q);
            var pdfConv = new HtmlToPdfConverter();
            var pdf     = pdfConv.GeneratePdf(s);

            return(File(pdf, "application/pdf", "Поручение.pdf"));
        }
コード例 #16
0
ファイル: EnregBaseController.cs プロジェクト: avgrishin/ob
        public ActionResult getPdf2(int ID)
        {
            var q       = enregRepository.GetPayment(ID);
            var s       = RenderViewToString(ControllerContext, "..\\payment\\doc2", q);
            var pdfConv = new HtmlToPdfConverter();
            var pdf     = pdfConv.GeneratePdf(s);

            return(File(pdf, "application/pdf", "Рапоряжение.pdf"));
        }
コード例 #17
0
        public void GenerateByteArrayByStringAndCover()
        {
            const string fileName = "GenerateByteArrayByStringAndCover.pdf";

            HtmlToPdfConverter generator = new HtmlToPdfConverter();

            byte[] pdfByteArray = generator.GeneratePdf(HTML_CONTENT, HTML_CONTENT_COVER);

            File.WriteAllBytes(Path.Combine(PDF_DIRECTORY, fileName), pdfByteArray);
        }
コード例 #18
0
        public static byte[] HtmlToPdf(string html)
        {
            var converter = new HtmlToPdfConverter
            {
                CustomWkHtmlPageArgs = " --no-stop-slow-scripts" +
                                       " --javascript-delay 5000" +
                                       " --disable-smart-shrinking"
            };

            return(converter.GeneratePdf(ResolveImageUrls(html)));
        }
コード例 #19
0
        public byte[] Translate(string bodyHtml)
        {
            var pdfConverter = new HtmlToPdfConverter
            {
                LowQuality     = false,
                PageHeaderHtml = HeaderFormat,
                PageFooterHtml = FooterFormat
            };

            return(pdfConverter.GeneratePdf(bodyHtml));
        }
コード例 #20
0
        // generar imagenes
        public byte[] generarReporte(string rutaPlantilla, string rutaPlantillaHeader, object data, string footer)
        {
            try
            {
                if (!string.IsNullOrEmpty(rutaPlantilla) && File.Exists(rutaPlantilla))
                {
                    var htmlToPdf = new HtmlToPdfConverter();

                    string plantillaHtmlHeader = string.Empty;
                    string plantillaHtml       = string.Empty;

                    using (StreamReader reader = new StreamReader(rutaPlantilla))
                    {
                        plantillaHtml = reader.ReadToEnd();
                        reader.Close();
                    }

                    using (StreamReader reader = new StreamReader(rutaPlantillaHeader))
                    {
                        plantillaHtmlHeader = reader.ReadToEnd();
                        reader.Close();
                    }

                    if (data != null)
                    {
                        foreach (var propertyInfo in data.GetType()
                                 .GetProperties(
                                     BindingFlags.Public
                                     | BindingFlags.Instance))
                        {
                            string nombre = propertyInfo.Name;
                            string valor  = propertyInfo.GetValue(data, null) == null ?
                                            string.Empty :
                                            propertyInfo.GetValue(data, null).ToString().Replace("\n", "<br/>")
                                            .Replace("á", "&aacute;").Replace("é", "&eacute;").Replace("í", "&iacute;").Replace("ó", "&oacute;").Replace("ú", "&uacute;")
                                            .Replace("Á", "&aacute;").Replace("É", "&eacute;").Replace("Í", "&iacute;").Replace("Ó", "&oacute;").Replace("Ú", "&uacute;")
                                            .Replace("Ñ", "&ntilde;").Replace("ñ", "&ntilde")
                            ;
                            plantillaHtml       = plantillaHtml.Replace("{{" + nombre + "}}", valor);
                            plantillaHtmlHeader = plantillaHtmlHeader.Replace("{{" + nombre + "}}", valor);
                        }
                    }

                    htmlToPdf.PageHeaderHtml = plantillaHtmlHeader;
                    htmlToPdf.PageFooterHtml = (!string.IsNullOrEmpty(footer))?footer: "<div style=\"font-size: 11px; border-top:1px solid grey;font-family:Arial, Helvetica, sans-serif;letter-spacing:1pt;padding:15px 12px\">Clínica Ricardo Palma           RENIPRESS: 00009409</div>";
                    return(htmlToPdf.GeneratePdf(plantillaHtml, null));
                }
            }
            catch (Exception e)
            {
                log.Error("ERROR MOSTRANDO REPORTE FAT__" + e.Source + "___" + e.ToString());
            }
            return(null);
        }
コード例 #21
0
ファイル: NRecoProvider.cs プロジェクト: mrpastewart/Core
        public byte[] ConvertHtmlToPdf(string html)
        {
            var converter = new HtmlToPdfConverter();

            //converter.Quiet = false;
            //converter.LogReceived += (sender, e) =>
            //{
            //	Debug.WriteLine("WkHtmlToPdf Log: {0}", e.Data);
            //};

            return(converter.GeneratePdf(html));
        }
コード例 #22
0
        public void GenerateStreamByStringAndCover()
        {
            const string fileName = "GenerateStreamByStringAndCover.pdf";

            using (MemoryStream stream = new MemoryStream())
            {
                HtmlToPdfConverter generator = new HtmlToPdfConverter();
                generator.GeneratePdf(HTML_CONTENT, HTML_CONTENT_COVER, stream);

                File.WriteAllBytes(Path.Combine(PDF_DIRECTORY, fileName), stream.ToArray());
            }
        }
コード例 #23
0
        /// <summary>
        /// Method which saves the PDF file in the folder
        /// </summary>
        /// <param name="path">Path where we will save the PDF file</param>
        /// <param name="htmlContent">HTML document with data</param>
        public void SavePdfQuote(string path, string htmlContent)
        {
            var htmlToPdf = new HtmlToPdfConverter
            {
                Size        = PageSize.A4,
                Orientation = PageOrientation.Portrait,
                Zoom        = 1.5F
            };

            byte[] pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
            System.IO.File.WriteAllBytes(System.IO.Path.Combine(path + "/Ponuda_" + DateTime.Now.ToFileTime() + ".pdf"), pdfBytes);
        }
コード例 #24
0
        public ActionResult GeneratePdf(string htmlContent, string htmlUrl)
        {
            var htmlToPdf = new HtmlToPdfConverter();

            var pdfContentType = "application/pdf";

            if (!String.IsNullOrEmpty(htmlUrl))
            {
                try
                {
                    return(File(htmlToPdf.GeneratePdfFromFile(htmlUrl, null), pdfContentType));
                }
                catch (Exception ex)
                {
                    return(File(htmlToPdf.GeneratePdf("<span style='color:red'><strong> DOMAIN NOT FOUND </strong></span>", null), pdfContentType));
                }
            }
            else
            {
                return(File(htmlToPdf.GeneratePdf(htmlContent, null), pdfContentType));
            }
        }
コード例 #25
0
        public static byte[] GeneratePdf(object model, string path)
        {
            HtmlToPdfConverter converter = new HtmlToPdfConverter();

            converter.Margins = new PageMargins()
            {
                Bottom = 5, Top = 5, Left = 5, Right = 5
            };
            converter.PdfToolPath = path;
            var html = GenerateHtml(model);

            return(converter.GeneratePdf(html));
        }
コード例 #26
0
ファイル: DocumentHtmlLibrary.cs プロジェクト: stylkyn/ess
        private byte[] CreatePdfDoc(string html)
        {
            HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();
            var res = htmlConverter.GeneratePdf(html);

            //byte[] res = null;
            //using (MemoryStream ms = new MemoryStream())
            //{
            //    var pdf = PdfGenerator.GeneratePdf(html, PdfSharp.PageSize.A4);
            //    pdf.Save(ms);
            //    res = ms.ToArray();
            //}
            return(res);
        }
コード例 #27
0
        public ActionResult GeneratePdf(string htmlContent, string htmlUrl)
        {
            var htmlToPdf = new HtmlToPdfConverter();

            var pdfContentType = "application/pdf";

            if (!String.IsNullOrEmpty(htmlUrl))
            {
                return(File(htmlToPdf.GeneratePdfFromFile(htmlUrl, null), pdfContentType));
            }
            else
            {
                return(File(htmlToPdf.GeneratePdf(htmlContent, null), pdfContentType));
            }
        }
コード例 #28
0
        public ActionResult DownloadRegistrationForm(int?id, int?rid)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            dynamic course = SystemHelper.GetCourseObject((int)id);

            if (course == null)
            {
                return(HttpNotFound());
            }
            var    objectName     = course.GetType().Name.ToString();
            string viewName       = @"..\Print\" + objectName + "Registration";
            string fileName       = objectName + "Registration.pdf";
            int?   registrationId = rid;

            if (rid == null && Session["UserId"] != null)
            {
                registrationId = (int)Session["UserId"];
            }
            dynamic student = null;

            if (objectName == typeof(Tarbea).Name.ToString())
            {
                student = SystemHelper.GetTarbeaRegistrationData((int)registrationId, (int)id);
            }

            /**
             * Add Else If Here For More Course Registration Print
             *
             * */

            if (student == null)
            {
                ViewBag.Message = "برجاء التسجيل اولا للتسجيل <a href='/Student/CourseRegistration/" + id + "'> اضغط هنا </a>";
                return(View("Message"));
            }
            string     htmlToConvert = SystemHelper.RenderViewAsString(viewName, student, this.ControllerContext);
            var        htmlToPdf     = new HtmlToPdfConverter();
            var        pdfBytes      = htmlToPdf.GeneratePdf(htmlToConvert);
            FileResult fileResult    = new FileContentResult(pdfBytes, "application/pdf")
            {
                FileDownloadName = registrationId + "-" + fileName
            };

            return(fileResult);
        }
コード例 #29
0
        public ActionResult DownloadResultForm(int?id, int?rid)
        {
            if (id == null || rid == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            dynamic course = SystemHelper.GetCourseObject((int)id);

            if (course == null)
            {
                return(HttpNotFound());
            }
            var     objectName     = course.GetType().Name.ToString();
            string  viewName       = @"..\Print\" + objectName + "StudentResult";
            string  fileName       = objectName + "Result.pdf";
            int     registrationId = (int)rid;
            dynamic result         = null;

            if (objectName == typeof(Tarbea).Name.ToString())
            {
                result = SystemHelper.GetCourseStudentResult(registrationId, (int)id);
            }

            /**
             * Add Else If Here For More Course Registration Print
             *
             * */

            if (result == null)
            {
                ViewBag.Message = "لم يتم ظهور النتيجة بعد";
                return(View("Message"));
            }
            if (result.ResultName == "راسب")
            {
                ViewBag.Message = "لم يتم اجتياز الدورة بنجاح";
                return(View("Message"));
            }
            string     htmlToConvert = SystemHelper.RenderViewAsString(viewName, result, this.ControllerContext);
            var        htmlToPdf     = new HtmlToPdfConverter();
            var        pdfBytes      = htmlToPdf.GeneratePdf(htmlToConvert);
            FileResult fileResult    = new FileContentResult(pdfBytes, "application/pdf")
            {
                FileDownloadName = registrationId + "-" + fileName
            };

            return(fileResult);
        }
コード例 #30
0
        public static void GeneratePDFFile(string content, string outputFile, string header = "", string footer = "")
        {
            HtmlToPdfConverter obj = new HtmlToPdfConverter();

            obj.Orientation = PageOrientation.Portrait;
            obj.Size        = PageSize.Letter;
            var margin = new PageMargins();

            margin.Left   = 5;
            margin.Right  = 5;
            margin.Top    = 5;
            margin.Bottom = 5;

            if (header == string.Empty)
            {
                obj.PageHeaderHtml = @"<div style='height: 50px; font-size:30px color:white'> Adding Header</div>";
            }
            else
            {
                obj.PageFooterHtml = header;
            }

            if (footer == string.Empty)
            {
                obj.PageFooterHtml = @"<div style='height: 50px; font-size:30px; color:white'> Adding Header</div>";
            }
            else
            {
                margin.Bottom      = 8;
                obj.PageFooterHtml = footer;
            }

            obj.Margins = margin;
            string outPDFFile = outputFile;

            try
            {
                byte[] outPdfBuffer = obj.GeneratePdf(content);
                File.WriteAllBytes(outPDFFile, outPdfBuffer);
                GC.Collect();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #31
0
		public ActionResult Registration(int? id)
		{
			var workStream = new MemoryStream();

			// get the record to which this registation id belongs to
			using (var session = NHibernateHelper.CreateSessionFactory())
			{
				using (var transaction = session.BeginTransaction())
				{
					// get the html template content

					var path = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/templates/registration.html");
					var htmlContent = System.IO.File.ReadAllText(path);

					var registrations =
						new List<Registration>(session.CreateCriteria(typeof (Registration)).List<Registration>());

					var r = registrations.FirstOrDefault(x => x.Id == id);


					// do string replacements to htmlContent here
					var parsedHtmlContent = htmlContent;

					// Head details
					if (r != null)
					{
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$BootstrapCss$$", BootstrapCss);

						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PHERMC_REG_NO$$", r.PhermcRegistrationNumber);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$LAST_RENEWAL_DATE$$", r.LastRenewalDate.HasValue ?  r.LastRenewalDate.Value.ToString("dd/MM/yyyy") : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$CAC_NUMBER$$", r.CacNumber);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$REGISTRATION_DATE$$", r.RegistrationDate.ToString("dd/MM/yyyy"));

						// Proprietor details
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_NAME$$", string.Concat(r.ProprietorFirstName, " ", r.ProprietorLastName));

						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_GENDER_MALE$$", r.ProprietorGender.Equals("Male") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_GENDER_FEMALE$$", r.ProprietorGender.Equals("Female") ? "X" : "");

						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_NIN_NUMBER$$", r.ProprietorNinNumber);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_MOBILE1$$", r.ProprietorMobile1);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_MOBILE2$$", r.ProprietorMobile2);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_EMAIL$$", r.ProprietorEmailAddress);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_IS_MD_NO$$", !r.ProprietorIsMedicalDirector ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PROPRIETOR_IS_MD_YES$$", r.ProprietorIsMedicalDirector ? "X" : "");

						// Medical Director details
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$MD_NAME$$", string.Concat(r.MedicalDirectorFirstName, " ", r.MedicalDirectorLastName));
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$MD_GENDER_MALE$$", r.MedicalDirectorGender == null ? "" : r.MedicalDirectorGender.Equals("Male") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$MD_GENDER_FEMALE$$", r.MedicalDirectorGender == null ? "" : r.MedicalDirectorGender.Equals("Female") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$MD_NIN_NUMBER$$", r.MedicalDirectorNinNumber);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$MD_MOBILE1$$", r.MedicalDirectorMobile1);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$MD_MOBILE2$$", r.MedicalDirectorMobile2);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$MD_EMAIL$$", r.MedicalDirectorEmailAddress);

						// Establishment details
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_NAME$$", r.EstablishmentName);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_TYPE_HOSPITAL$$", r.TypeOfEstablishment.Equals("Hospital") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_TYPE_CLINIC$$", r.TypeOfEstablishment.Equals("Clinic") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_TYPE_LABARATORY$$", r.TypeOfEstablishment.Equals("Laboratory") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_TYPE_MATERNITY$$", r.TypeOfEstablishment.Equals("Marernity") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_TYPE_PHYSIOTHERAPY$$", r.TypeOfEstablishment.Equals("Physiotherapy") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_TYPE_RADIODIAGNOSTIC$$", r.TypeOfEstablishment.Equals("Radiodiagnostic") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_TYPE_OTHER$$", r.TypeOfEstablishment.Equals("Other") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_TYPE_OTHER_NAME$$", r.TypeOfEstablishment.Equals("Hospital") ? "X" : "");

						// Establishment address
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_ADDRESS$$", string.Concat(r.AddressLine1, " ", r.AddressLine2));
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_LGA$$", r.Lga);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_LANDMARK$$", r.LandMark);

						// Numbers of staff
						/*
						var staffing = new StringBuilder();
						for (var i = 0; i < r.RegistrationStaffing.Count; i++)
						{
							var staff = r.RegistrationStaffing[i];

							staffing.AppendFormat("{0} {1}", staff.NumberOfStaff, staff.Staffing.Name);

							if (i >= 0 && i < r.RegistrationStaffing.Count - 1)
							{
								staffing.Append(", ");
							}
						}
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$STAFFING_PROFILE$$", staffing.ToString());
*/
						// Services
						var services = new StringBuilder();
						for (var i = 0; i < r.RegistrationServices.Count; i++)
						{
							var service = r.RegistrationServices[i];

							services.AppendFormat("{0} {1}", service.Selected, service.Service.Name);

							if (i >= 0 && i < r.RegistrationServices.Count - 1)
							{
								services.Append(", ");
							}
						}
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$SERVICES$$", services.ToString());

						// Administrator details
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ADMIN_NAME$$", string.Concat(r.AdministratorFirstName, " ", r.AdministratorLastName));
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ADMIN_MOBILE1$$", r.AdministratorMobile1);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ADMIN_MOBILE2$$", r.AdministratorMobile2);

						// Professional Body details
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_ATT_20$$", r.ProfessionalBodyAttendance.Equals("20 Units") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_ATT_LESS20$$", r.ProfessionalBodyAttendance.Equals("Less than 20 Units") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_ATT_NOTATALL$$", r.ProfessionalBodyAttendance.Equals("Not at all") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_INVOLVE_REGULAR$$", r.ProfessionalBodyInvolvement.Equals("Regular") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_INVOLVE_IRREGULAR$$", r.ProfessionalBodyInvolvement.Equals("Irregular") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_INVOLVE_NOT$$", r.ProfessionalBodyInvolvement.Equals("Not Involved") ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_NAME$$", string.Concat(r.ProfessionalBodyFirstName, " ", r.ProfessionalBodyLastName));
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_POSITION$$", r.ProfessionalBodyPosition);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PBODY_REMARKS$$", r.ProfessionalBodyRemarks);

						// Acceptance details
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ACCEPTANCE_NO$$", !r.AcceptanceDetailsAccepted ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ACCEPTANCE_YES$$", r.AcceptanceDetailsAccepted ? "X" : "");
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ACCEPTANCE_REASON$$", r.AcceptanceDetailsReason);

						// create instance of pdf api
						var htmlToPdf = new HtmlToPdfConverter();

						// convert theget a byte array 
						var pdfBytes = htmlToPdf.GeneratePdf(parsedHtmlContent);

						var byteInfo = pdfBytes;
						workStream.Write(byteInfo, 0, byteInfo.Length);
						workStream.Position = 0;
					}
				}
			}

			//return new FileStreamResult(workStream, "application/pdf");
			return File(workStream, "application/pdf", string.Format("Establishment_{0}_{1}.pdf", id, DateTime.Now.ToString("yyyyMMddhhmmss")) );
		}
コード例 #32
0
        public void A_Pdf_Is_Generated()
        {
            //Arange
            string html = @"<div class='row'>
            <div>
            <div>
            <table>
                <thead>
                    <tr>
                        <th></th>
                        <th>titel</th>
                        <th></th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td></td>
                        <td>1</td>
                        <td></td>
                    </tr>

                </tbody>
            </table>
            </div>
            </div>
            <div>
            <div>
            <div>

                <div>
                    Voornaam Achternaam
                </div>
                <div>
                    <a>save</a>
                </div>
            </div>
            <div>
                <div>
                    <h5>Omschrijving</h5>
                    <table>
                        <thead>
                            <tr>
                                <th>Omschrijving:</th>
                                <th>Gewicht</th>

                                <th>Score</th>
                                <th>?</th>
                                <th>---</th>

                            </tr>
                        </thead>
                        <tbody>

                            <tr>
                                <td>doel omschrijving</td>
                                <td>20</td>
                                <td>
                                    <a>3</a>
                                </td>
                                <td>
                                    <div>
                                       Andere taak
                                    </div>
                                </td>
                                <td></td>
                            </tr>
                            <tr>
                                <td>doel omschrijving</td>
                                <td>20</td>
                                <td>
                                    <a>3</a>
                                </td>
                                <td>
                                    <div>
                                        Afwezig
                                    </div>
                                </td>
                                <td></td>
                            </tr>
                            <tr>
                                <td>doel omschrijving</td>
                                <td>20</td>
                                <td>
                                    <a>3</a>
                                </td>
                                <td>
                                    <div>
                                        Andere taak
                                    </div>
                                </td>
                                <td></td>
                            </tr>
                        </tbody>
                        <tfoot>
                            <tr>
                                <td></td>
                                <td></td>
                                <td></td>
                                <td></td>
                                <td></td>

                            </tr>
                        </tfoot>
                    </table>
                </div>

                <div>Totaal: ??</div>

                <div>
                    <div> Opmerking:</div>
                    <div>
                        <textarea></textarea>
                    </div>
                </div>
            </div>
            </div>
            </div>
            </div>";
            string filename = @"C:\temp\pdftest.pdf";
            var pdfConverter = new HtmlToPdfConverter();
            pdfConverter.Orientation = PageOrientation.Landscape;

            //Act
            pdfConverter.GeneratePdf(html,null, filename);

            // bool success = SaveData(filename, pdfbytes);

            ////Assert
            //Assert.True(success);
            //Assert
            // no assert assert = no error
        }
コード例 #33
0
		public ActionResult Receipt(int? id)
		{
			var workStream = new MemoryStream();

			// get the record to which this registation id belongs to
			using (var session = NHibernateHelper.CreateSessionFactory())
			{
				using (var transaction = session.BeginTransaction())
				{
					// get the html template content
					var path = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/templates/receipt.html");
					var htmlContent = System.IO.File.ReadAllText(path);

					var registrations = new List<Renewal>(session.CreateCriteria(typeof(Renewal)).List<Renewal>());


					var ts = new List<Transaction>(session.CreateCriteria(typeof(Transaction)).List<Transaction>());
					var t = ts.FirstOrDefault(x => x.Id == id);

					var r = t.Renewal.Registration;

					// do string replacements to htmlContent here
					var parsedHtmlContent = htmlContent;

					// Head details
					if (r != null)
					{
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$BootstrapCss$$", BootstrapCss);

						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PHERMC_REG_NO$$", r.PhermcRegistrationNumber);

						var lastRenewalDate = r.LastRenewalDate == null || r.LastRenewalDate.Equals(DateTime.MinValue)
							? ""
							: r.LastRenewalDate.Value.ToString("dd/MM/yyyy");

						parsedHtmlContent = Replacement(parsedHtmlContent, "$$ESTABLISHMENT_NAME$$", r.EstablishmentName);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$CAC_NUMBER$$", r.CacNumber);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$REGISTRATION_DATE$$", r.RegistrationDate.ToString("dd/MM/yyyy"));

						// create $$TBODY_CONTENT$$ here
						var totalPaid = 0.0M;
						var tbodyRows = new StringBuilder();

						var payments = t.Renewal.Transactions;

						if (payments.Any())
						{
							foreach (var p in payments)
							{
								totalPaid += p.Amount;
							}
						}

						var lastPayment = t;

						var receiptTitle = "PAYMENT RECEIPT";
						if (lastPayment.Printed)
						{
							receiptTitle = "COPY OF RECEIPT";
						}
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$RECEIPT_TITLE$$", receiptTitle);

						tbodyRows.Append("<tr>");

						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.Date.ToString("dd/MM/yyyy"));
						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.PaymentType.Name);
						tbodyRows.AppendFormat("<td>{0}</td>", "");
						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.ReceivedFrom);
						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.ReceivedBy.Username);
						tbodyRows.AppendFormat("<td class=\"right\">&#x20a6;{0}</td>", lastPayment.Amount.ToString("#,##0.00"));

						tbodyRows.Append("</tr>");

						parsedHtmlContent = Replacement(parsedHtmlContent, "$$TBODY_CONTENT$$", tbodyRows.ToString());

						// Update totals
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$TOTAL$$", lastPayment.Amount.ToString("N2"));
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$TOTAL_DUE$$", t.Renewal.Amount.ToString("#,##0.00"));
						var amountOutstanding = t.Renewal.Amount - totalPaid;
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$OUTSTANDING$$", amountOutstanding.ToString("#,##0.00"));

						// create instance of pdf api
						var htmlToPdf = new HtmlToPdfConverter();

						// convert theget a byte array 
						var pdfBytes = htmlToPdf.GeneratePdf(parsedHtmlContent);

						var byteInfo = pdfBytes;
						workStream.Write(byteInfo, 0, byteInfo.Length);
						workStream.Position = 0;

						lastPayment.Printed = true;
						transaction.Commit();

					}

				}
			}

			return File(workStream, "application/pdf", string.Format("Receipt_{0}_{1}.pdf", id, DateTime.Now.ToString("yyyyMMddhhmmss")));

		}
コード例 #34
0
ファイル: Invoice.aspx.cs プロジェクト: rameshthanus/ERP
 /// <summary>
 /// Converts html into PDF using nReco dll and wkhtmltopdf.exe.
 /// </summary>        
 private byte[] ConvertHtmlToPDF()
 {
     HtmlToPdfConverter nRecohtmltoPdfObj = new HtmlToPdfConverter();
     nRecohtmltoPdfObj.Orientation = PageOrientation.Portrait;
     nRecohtmltoPdfObj.PageFooterHtml = CreatePDFFooter();
     nRecohtmltoPdfObj.CustomWkHtmlArgs = "--margin-top 35 --header-spacing 0 --margin-left 0 --margin-right 0";
     return nRecohtmltoPdfObj.GeneratePdf(CreatePDFScript() + ShowHtml() + "</body></html>");
 }
コード例 #35
0
		public ActionResult ReceiptX(int? id)
		{
			var workStream = new MemoryStream();

			// get the record to which this registation id belongs to
			using (var session = NHibernateHelper.CreateSessionFactory())
			{
				using (var transaction = session.BeginTransaction())
				{
					// get the html template content

					var path = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/templates/receipt.html");
					var htmlContent = System.IO.File.ReadAllText(path);

					var registrations =
						new List<Registration>(session.CreateCriteria(typeof(Registration)).List<Registration>());

					var r = registrations.FirstOrDefault(x => x.Id == id);


					// do string replacements to htmlContent here
					var parsedHtmlContent = htmlContent;

					// Head details
					if (r != null)
					{
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$BootstrapCss$$", BootstrapCss);

						parsedHtmlContent = Replacement(parsedHtmlContent, "$$PHERMC_REG_NO$$", r.PhermcRegistrationNumber);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$LAST_RENEWAL_DATE$$", r.LastRenewalDate.Value.ToString("dd/MM/yyyy"));
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$CAC_NUMBER$$", r.CacNumber);
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$REGISTRATION_DATE$$", r.RegistrationDate.ToString("dd/MM/yyyy"));

						// create $$TBODY_CONTENT$$ here
						var totalPaid = 0.0M;
						var tbodyRows = new StringBuilder();

						var payments =
							new List<Payment>(session.CreateCriteria(typeof(Payment)).List<Payment>());

						var paymentEntries =
							from x in payments
								where x.Registration.Id == id
							select x;

						if (paymentEntries.Any())
						{
							foreach (var p in paymentEntries)
							{
								totalPaid += p.AmountPaid;
							}
						}

						var lastPayment = paymentEntries.LastOrDefault();

						tbodyRows.Append("<tr>");

						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.Created.ToString("dd/MM/yyyy"));
						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.PaymentMethod);
						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.ReferenceNumber);
						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.ReceivedFrom);
						tbodyRows.AppendFormat("<td>{0}</td>", lastPayment.ReceivedByName);
						tbodyRows.AppendFormat("<td class=\"right\">&#x20a6;{0}</td>", lastPayment.AmountPaid.ToString("#,##0.00"));

						tbodyRows.Append("</tr>");

						parsedHtmlContent = Replacement(parsedHtmlContent, "$$TBODY_CONTENT$$", tbodyRows.ToString());

						// Update totals
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$TOTAL$$", lastPayment.AmountPaid.ToString("N2"));
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$TOTAL_DUE$$", r.RegistrationCosts.ToString("#,##0.00"));
						var amountOutstanding = r.RegistrationCosts - totalPaid;
						parsedHtmlContent = Replacement(parsedHtmlContent, "$$OUTSTANDING$$", amountOutstanding.ToString("#,##0.00"));

						// create instance of pdf api
						var htmlToPdf = new HtmlToPdfConverter();

						// convert theget a byte array 
						var pdfBytes = htmlToPdf.GeneratePdf(parsedHtmlContent);

						var byteInfo = pdfBytes;
						workStream.Write(byteInfo, 0, byteInfo.Length);
						workStream.Position = 0;
					}
				}
			}

			return new FileStreamResult(workStream, "application/pdf");
		}