예제 #1
0
 /// <summary>
 /// https://stackoverflow.com/questions/27015644/how-to-add-a-rich-textbox-html-to-a-table-cell
 /// </summary>
 /// <returns></returns>
 private byte[] GenerateData()
 {
     byte[] data = null;
     using (var ms = new MemoryStream())
     {
         using (var doc = new Document())
         {
             using (var writer = PdfWriter.GetInstance(doc, ms))
             {
                 doc.Open();
                 string htmlString = @"<p><strong>Lorem Ipsum</strong> is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>";
                 //var css = @".headline{font-size:200%}";
                 PdfPTable table = new PdfPTable(2);
                 table.AddCell("Some Rich Text");
                 PdfPCell cell = new PdfPCell();
                 foreach (var item in XMLWorkerHelper.ParseToElementList(htmlString, null))
                 {
                     cell.AddElement(item);
                 }
                 table.AddCell(cell);
                 doc.Add(table);
                 doc.Close();
             }
         }
         data = ms.ToArray();
     }
     return(data);
 }
예제 #2
0
        public MemoryStream GeneratePDF()
        {
            var doc = new Document();
            var ms  = new MemoryStream();

            var writer = PdfWriter.GetInstance(doc, ms);

            doc.Open();

            PdfPTable table = new PdfPTable(1);
            PdfPCell  cell  = new PdfPCell();

            string htmlBeforeImage =
                "<h1 class=\"text-center\">Silicon Shores</h1>\n" +
                "<h3 class=\"col-md-4\">One " + ticket_types.ticket_name + " Ticket</h3>";

            string htmlAfterImage =
                "<p>Thank you for your ticket purchase! This ticket is redeemable any time at Silicon Shores Theme Park for a days admission</p>\n" +
                "<p>Requirements for redemption: " + ticket_types.ticket_restrictions + ".</p>\n" +
                File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/Views/TicketPdf.cshtml"));

            var bootstrap = File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/bootstrap.min.css"))
                            + File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/bootstrap-theme.min.css"));

            ElementList list = XMLWorkerHelper.ParseToElementList(htmlBeforeImage, bootstrap);

            foreach (var element in list)
            {
                cell.AddElement(element);
            }

            iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(BarCodeImage(), BaseColor.WHITE);
            var scale = 115;

            img.ScalePercent(scale);
            cell.AddElement(img);

            list = XMLWorkerHelper.ParseToElementList(htmlAfterImage, bootstrap);
            foreach (var element in list)
            {
                cell.AddElement(element);
            }

            table.AddCell(cell);

            doc.Add(table);

            writer.CloseStream = false;
            doc.Close();
            ms.Position = 0;

            return(ms);
        }
 public HtmlHeaderFooter(string htmlHeader = "", string htmlFooter = "")
 {
     header = XMLWorkerHelper.ParseToElementList(htmlHeader ?? "", null);
     if (string.IsNullOrWhiteSpace(htmlHeader) == false && header.Count == 0)
     {
         // header was not in html format so bring it in html format
         var htmlHeader2 = string.Format("<p>{0}</p>", htmlHeader);
         header = XMLWorkerHelper.ParseToElementList(htmlHeader2, null);
     }
     footer = XMLWorkerHelper.ParseToElementList(htmlFooter ?? "", null);
     if (string.IsNullOrWhiteSpace(htmlFooter) == false && footer.Count == 0)
     {
         // footer was not in html format so bring it in html format
         var htmlFooter2 = string.Format("<p>{0}</p>", htmlFooter);
         footer = XMLWorkerHelper.ParseToElementList(htmlFooter2, null);
     }
 }
예제 #4
0
 public PageEventHelper(string headerHtml)
 {
     _header = XMLWorkerHelper.ParseToElementList(headerHtml, null);
 }
        public string PrintPDF(PDFTools pDFToolsObj)
        {
            //string imageURL = Server.MapPath("~/Content/images/logo.png");
            //iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageURL);
            ////Resize image depend upon your need
            //jpg.ScaleToFit(70f, 60f);
            //jpg.SpacingBefore = 10f;
            //jpg.SpacingAfter = 1f;

            //jpg.Alignment = Element.ALIGN_LEFT;
            string       htmlBody = pDFToolsObj.Content.Replace("<br>", "<br/>").ToString();
            StringReader reader   = new StringReader(htmlBody.ToString());
            Document     pdfDoc   = new Document(PageSize.A4, 10f, 10f, 85f, 30f);

            byte[] bytes = null;
            using (MemoryStream memoryStream = new MemoryStream())
            {
                PdfWriter writer  = PdfWriter.GetInstance(pdfDoc, memoryStream);
                Footer    footobj = new Footer();
                footobj.imageURL    = Server.MapPath("~/Content/images/header.png");
                footobj.imgURL      = Server.MapPath("~/Content/images/footer.jpg");
                footobj.Header      = XMLWorkerHelper.ParseToElementList(pDFToolsObj.Headcontent, null);
                footobj.Tableheader = pDFToolsObj.HeaderText;
                writer.PageEvent    = footobj;
                // Our custom Header and Footer is done using Event Handler
                //TwoColumnHeaderFooter PageEventHandler = new TwoColumnHeaderFooter();
                //writer.PageEvent = PageEventHandler;
                //// Define the page header
                //PageEventHandler.Title = "Column Header";
                //PageEventHandler.HeaderFont = FontFactory.GetFont(BaseFont.COURIER_BOLD, 10, Font.BOLD);
                //PageEventHandler.HeaderLeft = "Group";
                //PageEventHandler.HeaderRight = "1";
                pdfDoc.Open();
                //jpg.SetAbsolutePosition(pdfDoc.Left, pdfDoc.Top - 60);
                //pdfDoc.Add(jpg);
                //PdfContentByte cb = writer.DirectContent;
                //cb.MoveTo(pdfDoc.Left, pdfDoc.Top-60 );
                //cb.LineTo(pdfDoc.Right, pdfDoc.Top-60);
                //cb.SetLineWidth(1);
                //cb.SetColorStroke(new CMYKColor(0f, 12f, 0f, 7f));
                //cb.Stroke();
                //cb.MoveTo(pdfDoc.Left, pdfDoc.Top+5);
                //cb.LineTo(pdfDoc.Right, pdfDoc.Top+5);
                //cb.SetLineWidth(1);
                //cb.SetColorStroke(new CMYKColor(0f, 12f, 0f, 7f));
                //cb.Stroke();

                //Paragraph welcomeParagraph = new Paragraph("Hello, World!");
                // Our custom Header and Footer is done using Event Handler

                //pdfDoc.Add(welcomeParagraph);

                XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, reader);
                //for (int i = 0; i <= 2; i++)
                //{
                //    // Define the page header
                //    PageEventHandler.HeaderRight = i.ToString();
                //    if (i != 1)
                //    {
                //        pdfDoc.NewPage();
                //    }
                //}
                pdfDoc.Close();
                bytes = memoryStream.ToArray();
                memoryStream.Close();
            }
            string name = pDFToolsObj.CustomerName;//.Split(":").ToString();

            string[] words = name.Split(':');
            string   fname = Path.Combine(Server.MapPath("~/Content/Uploads/"), pDFToolsObj.HeaderText.ToString() + " FOR " + words[1] + ".pdf");

            System.IO.File.WriteAllBytes(fname, bytes);
            //File(bytes, "application/pdf", "Report.pdf").sa
            //bytes.SaveAs(fname);
            return(JsonConvert.SerializeObject(new { Result = "OK", URL = "../Content/Uploads/" + pDFToolsObj.HeaderText.ToString() + " FOR " + words[1] + ".pdf" }));
        }
        public FileResult Download(PDFTools pDFToolsObj)
        {
            //jpg.Alignment = Element.ALIGN_LEFT;
            string       htmlBody = pDFToolsObj.Content.Replace("<br>", "<br/>").ToString();
            StringReader reader   = new StringReader(htmlBody.ToString());
            Document     pdfDoc   = new Document(PageSize.A4, 10f, 10f, 85f, 30f);

            byte[] bytes = null;
            using (MemoryStream memoryStream = new MemoryStream())
            {
                PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);

                Footer footobj = new Footer();
                footobj.imageURL     = Server.MapPath("~/Content/images/header.png");
                footobj.imgURL       = Server.MapPath("~/Content/images/footer.jpg");
                footobj.Header       = XMLWorkerHelper.ParseToElementList(pDFToolsObj.Headcontent, null);
                footobj.CustomerName = pDFToolsObj.CustomerName;
                footobj.Tableheader  = pDFToolsObj.HeaderText;
                writer.PageEvent     = footobj;

                // Our custom Header and Footer is done using Event Handler
                //TwoColumnHeaderFooter PageEventHandler = new TwoColumnHeaderFooter();
                //writer.PageEvent = PageEventHandler;
                //// Define the page header
                //PageEventHandler.Title = "Column Header";
                //PageEventHandler.HeaderFont = FontFactory.GetFont(BaseFont.COURIER_BOLD, 10, Font.BOLD);
                //PageEventHandler.HeaderLeft = "Group";
                //PageEventHandler.HeaderRight = "1";
                pdfDoc.Open();
                //jpg.SetAbsolutePosition(pdfDoc.Left, pdfDoc.Top - 60);
                //pdfDoc.Add(jpg);
                //PdfContentByte cb = writer.DirectContent;
                //cb.MoveTo(pdfDoc.Left, pdfDoc.Top-60 );
                //cb.LineTo(pdfDoc.Right, pdfDoc.Top-60);
                //cb.SetLineWidth(1);
                //cb.SetColorStroke(new CMYKColor(0f, 12f, 0f, 7f));
                //cb.Stroke();
                //cb.MoveTo(pdfDoc.Left, pdfDoc.Top+5);
                //cb.LineTo(pdfDoc.Right, pdfDoc.Top+5);
                //cb.SetLineWidth(1);
                //cb.SetColorStroke(new CMYKColor(0f, 12f, 0f, 7f));
                //cb.Stroke();

                //Paragraph welcomeParagraph = new Paragraph("Hello, World!");
                // Our custom Header and Footer is done using Event Handler

                //pdfDoc.Add(welcomeParagraph);

                XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, reader);
                //for (int i = 0; i <= 2; i++)
                //{
                //    // Define the page header
                //    PageEventHandler.HeaderRight = i.ToString();
                //    if (i != 1)
                //    {
                //        pdfDoc.NewPage();
                //    }
                //}
                pdfDoc.Close();
                bytes = memoryStream.ToArray();
                memoryStream.Close();
            }

            string name = pDFToolsObj.CustomerName;

            string[] words = name.Split(':');
            string   fname = Path.Combine(Server.MapPath("~/Content/Uploads/"), pDFToolsObj.HeaderText.ToString() + " FOR " + words[1] + ".pdf");

            System.IO.File.WriteAllBytes(fname, bytes);
            string contentType = "application/pdf";

            //Parameters to file are
            //1. The File Path on the File Server
            //2. The content type MIME type
            //3. The parameter for the file save by the browser
            return(File(fname, contentType, pDFToolsObj.HeaderText.ToString() + " FOR " + words[1] + ".pdf"));
        }
예제 #7
0
 public PdfEvents()
 {
     header = XMLWorkerHelper.ParseToElementList(HEADER, null);
     footer = XMLWorkerHelper.ParseToElementList(FOOTER, null);
 }