CSharp: iText 8.0 in donet 4.8.1

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebAppPdfDemo.WebForm1" ResponseEncoding="utf-8" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="renderer" content="webkit" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"/>
    <title>geovindu</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
        </div>
    </form>
</body>
</html>

  

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text;
using iText.IO.Font;
using iText.IO.Image;
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Draw;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using iText.Pdfa;
using iText.IO;
using iText.Kernel.Pdf.Xobject;
using iText.Kernel.Utils;
using iText.Kernel.Events;
using iText.Kernel.Colors;
using iText.Kernel.Geom;
using iText.Kernel.Pdf.Canvas;
using iText.Layout.Borders;



namespace WebAppPdfDemo
{


    /// <summary>
    /// iText 8.0
    /// 
    /// </summary>
    public partial class WebForm1 : System.Web.UI.Page
    {


        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {


            try
            {

                //字體設定,c:\windows\fonts\kaiu.ttf,中文楷體
                string filePath = Server.MapPath(@"sRGB_CS_profile.icm");
                string fontFile = @"c:\windows\fonts\kaiu.ttf";
                string fontFile2 = Server.MapPath(@"font\\MHeiHK-Light.TTF");
                string fileName = Server.MapPath(@"sample\\" + DateTime.Now.ToString("yyyyMMHHmmss") + ".pdf");


                List<Orders> orders = new List<Orders>();
                Orders order = new Orders();
                order.productId = 1;
                order.product = "中國電器";
                order.qty = 50;
                order.price = 52.0;
                orders.Add(order);

                order = new Orders();
                order.productId = 2;
                order.product = "日本電器";
                order.qty = 150;
                order.price = 252.0;
                orders.Add(order);


                //PdfADocument pdf = new PdfADocument(
                //new PdfWriter(fileName),
                //PdfAConformanceLevel.PDF_A_1B,
                //new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1",
                // new FileStream(filePath, FileMode.Open, FileAccess.Read)));

                PdfDocument pdf = new PdfDocument(new PdfWriter(new FileStream(fileName, FileMode.Create, FileAccess.Write)));


                //FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                //PdfReader reader=new PdfReader(stream);
                //PdfADocument pdf = new PdfADocument(reader, new PdfWriter(fileName));     


                //中文 字體和文字要相適應
                //FontProgramFactory.CreateFont(fontFile);
                PdfFont font = PdfFontFactory.CreateFont(fontFile2, PdfEncodings.IDENTITY_H);//PdfFontFactory.EmbeddingStrategy.FORCE_EMBEDDED
                Document document = new Document(pdf, iText.Kernel.Geom.PageSize.A4);

                document.SetFont(font);


                //指定位置添加圖片  images\luflog20180410145504.png
                //PdfContentByte pcb1 = writer.DirectContent;

                //image1.SetAbsolutePosition(12, 18); //底部
                PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.Create(Server.MapPath("images/luflog20180410145504.png")));
                iText.Layout.Element.Image image1 = new iText.Layout.Element.Image(xObject, 200);
                // ColumnText ct = new ColumnText(pcb1);
                image1.ScaleAbsolute(148, 50);
                //pcb1.AddImage(image1);     
                //Resize image depend upon your need
                image1.ScaleToFit(140f, 120f);

                //p = new Paragraph(new Chunk(image1, 10f, 10f));
                iText.Layout.Element.Table datatable = new iText.Layout.Element.Table(5, true); //5列                

                Cell pCTitle = new Cell(1, 5).SetBorder(iText.Layout.Borders.Border.NO_BORDER);//無邊
                Paragraph p = new Paragraph().SetTextAlignment(TextAlignment.CENTER);
                p.Add(image1.SetTextAlignment(TextAlignment.CENTER));
                pCTitle.Add(p);
                datatable.AddCell(pCTitle);
                document.Add(datatable);





                Paragraph header = new Paragraph("ORDER DETAIL 顧客塗聚文訂單詳情").SetTextAlignment(TextAlignment.CENTER).SetFontSize(20);
                document.Add(header);

                Paragraph subheader = new Paragraph("C# WINDOWS FORM CREATE PDF DOCUMENT USING iTEXT7 LIBRARY").SetTextAlignment(TextAlignment.CENTER).SetFontSize(10);
                document.Add(subheader);

                LineSeparator ls = new LineSeparator(new SolidLine());
                document.Add(ls);

                Paragraph sellerHeader = new Paragraph("Sold by:").SetBold().SetTextAlignment(TextAlignment.LEFT);
                Paragraph sellerDetail = new Paragraph("Seller Company").SetTextAlignment(TextAlignment.LEFT);
                Paragraph sellerAddress = new Paragraph("Shenzhen city, Guangdong China").SetTextAlignment(TextAlignment.LEFT);
                Paragraph sellerContact = new Paragraph("+91 1000000000").SetTextAlignment(TextAlignment.LEFT);

                document.Add(sellerHeader);
                document.Add(sellerDetail);
                document.Add(sellerAddress);
                document.Add(sellerContact);

                Paragraph customerHeader = new Paragraph("Customer details:").SetBold().SetTextAlignment(TextAlignment.RIGHT);
                Paragraph customerDetail = new Paragraph("Customer ABC").SetTextAlignment(TextAlignment.RIGHT);
                Paragraph customerAddress1 = new Paragraph("Buxin 1008, shuibei Jewellery Builder").SetTextAlignment(TextAlignment.RIGHT);
                Paragraph customerAddress2 = new Paragraph("Shenzhen 518019, Guangdong China").SetTextAlignment(TextAlignment.RIGHT);

                Paragraph customerContact = new Paragraph("+85 0000000000").SetTextAlignment(TextAlignment.RIGHT);

                document.Add(customerHeader);
                document.Add(customerDetail);
                document.Add(customerAddress1);
                document.Add(customerAddress2);
                document.Add(customerContact);

                Paragraph orderNo = new Paragraph("Order No:15484659").SetBold().SetTextAlignment(TextAlignment.LEFT);
                Paragraph invoiceNo = new Paragraph("Invoice No:MH-MU-1077").SetTextAlignment(TextAlignment.LEFT);
                Paragraph invoiceTimestamp = new Paragraph("Date: 30/01/2024 04:25:37 PM").SetTextAlignment(TextAlignment.LEFT);

                document.Add(orderNo);
                document.Add(invoiceNo);
                document.Add(invoiceTimestamp);

                iText.Layout.Element.Table table = new iText.Layout.Element.Table(5, true);

                table.SetFontSize(9);
                Cell headerProductId = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph("ID"));
                Cell headerProduct = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph("產品名稱"));
                Cell headerProductPrice = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph("價格"));
                Cell headerProductQty = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph("數量"));
                Cell headerTotal = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph("合計"));

                table.AddCell(headerProductId);
                table.AddCell(headerProduct);
                table.AddCell(headerProductPrice);
                table.AddCell(headerProductQty);
                table.AddCell(headerTotal);

                double grandTotalVal = 0;
                foreach (Orders c in orders)
                {
                    Cell productid = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph(c.productId.ToString()));
                    Cell product = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph(c.product));
                    Cell price = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph(c.price.ToString()));
                    Cell qty = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph(c.qty.ToString()));
                    var value = c.price * c.qty;
                    Cell total = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph(value.ToString()));

                    grandTotalVal += value;
                    table.AddCell(productid);
                    table.AddCell(product);
                    table.AddCell(price);
                    table.AddCell(qty);
                    table.AddCell(total);
                }

                Cell grandTotalHeader = new Cell(1, 4).SetTextAlignment(TextAlignment.RIGHT).Add(new Paragraph("合計: "));
                Cell grandTotal = new Cell(1, 1).SetTextAlignment(TextAlignment.LEFT).Add(new Paragraph(" " + grandTotalVal.ToString()));

                table.AddCell(grandTotalHeader);
                table.AddCell(grandTotal);

                document.Add(table);


                //底部
                float[] tableWidth = { 445, 50F };
                iText.Layout.Element.Table footerTable = new iText.Layout.Element.Table(5).SetFixedPosition(20F, 25F, 780F).SetBorder(iText.Layout.Borders.Border.NO_BORDER);

                PdfImageXObject xObject2 = new PdfImageXObject(ImageDataFactory.Create(Server.MapPath("images/lufaddress_20180410145531.png")));
                iText.Layout.Element.Image image2 = new iText.Layout.Element.Image(xObject2, 500);
                //image2.SetMarginBottom(18); //底部
                //image2.ScaleAbsolute(585, 40);
                image2.SetTextAlignment(TextAlignment.LEFT);
                Paragraph p2 = new Paragraph().SetTextAlignment(TextAlignment.LEFT);
                p2.Add(image2.SetTextAlignment(TextAlignment.LEFT));

                Cell cfoot = new Cell(1, 5).SetBorder(iText.Layout.Borders.Border.NO_BORDER); //離得遠
                cfoot.Add(p2);
                footerTable.AddCell(cfoot).SetTextAlignment(TextAlignment.LEFT);
                document.Add(footerTable);


                // document.Add(image2);

                table.Flush();
                table.Complete();
                document.Close();
                Response.Charset = "utf-8";//設置輸出流的字符集-中文
                Response.ContentType = "application/pdf";
                // Response.Write(fileName);

                MemoryStream m = new MemoryStream();
                FileStream fs = new FileStream(fileName, FileMode.Open);
                fs.CopyTo(m);
                Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length);
                Response.OutputStream.Flush();
                Response.OutputStream.Close();

                //自動下載
                //Response.Clear();
                //Response.ContentType = "application/pdf";
                //Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
                //Response.TransmitFile(fileName);
                //Response.End();


            }
            catch (Exception ex)
            {
                ex.Message.ToString();
                Response.Write(ex.Message.ToString());
            }


        }
    }


    /// <summary>
    /// 訂單實體類
    /// </summary>
    public class Orders
    {
        /// <summary>
        /// ID
        /// </summary>
        public int productId { get; set; }
        /// <summary>
        /// 產品名稱
        /// </summary>
        public string product { get; set; }
        /// <summary>
        /// 數量
        /// </summary>
        public int qty { get; set; }
        /// <summary>
        /// 價格
        /// </summary>
        public double price { get; set; }
    }
}

  

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章