C# 利用iTextSharp画PDF

利用iTextSharp画PDF

友情提示:以下画PDF的代码是先创建PDF文件,然后往PDF里填充数据,如果不符合业务需求的,可以滑过

1、首先,添加iTextSharp包
iTextSharp程序包
2、添加PDF基类,供添加页脚、页眉、水印等

 /// <summary>
    /// Pdf处理基类
    /// </summary>
    public class PDFBase : PdfPageEventHelper
    {
   
   
        #region 属性
        private String _fontFilePathForHeaderFooter = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "SIMHEI.TTF");
        /// <summary>
        /// 页眉/页脚所用的字体
        /// </summary>
        public String FontFilePathForHeaderFooter
        {
   
   
            get
            {
   
   
                return _fontFilePathForHeaderFooter;
            }

            set
            {
   
   
                _fontFilePathForHeaderFooter = value;
            }
        }

        private String _fontFilePathForBody = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "SIMSUN.TTC,1");
        /// <summary>
        /// 正文内容所用的字体
        /// </summary>
        public String FontFilePathForBody
        {
   
   
            get {
   
    return _fontFilePathForBody; }
            set {
   
    _fontFilePathForBody = value; }
        }


        private PdfPTable _header;
        /// <summary>
        /// 页眉
        /// </summary>
        public PdfPTable Header
        {
   
   
            get {
   
    return _header; }
            private set {
   
    _header = value; }
        }

        private PdfPTable _footer;
        /// <summary>
        /// 页脚
        /// </summary>
        public PdfPTable Footer
        {
   
   
            get {
   
    return _footer; }
            private set {
   
    _footer = value; }
        }


        private BaseFont _baseFontForHeaderFooter;
        /// <summary>
        /// 页眉页脚所用的字体
        /// </summary>
        public BaseFont BaseFontForHeaderFooter
        {
   
   
            get {
   
    return _baseFontForHeaderFooter; }
            set {
   
    _baseFontForHeaderFooter = value; }
        }

        private BaseFont _baseFontForBody;
        /// <summary>
        /// 正文所用的字体
        /// </summary>
        public BaseFont BaseFontForBody
        {
   
   
            get {
   
    return _baseFontForBody; }
            set {
   
    _baseFontForBody = value; }
        }

        private Document _document;
        /// <summary>
        /// PDF的Document
        /// </summary>
        public Document Document
        {
   
   
            get {
   
    return _document; }
            private set {
   
    _document = value; }
        }

        #endregion


        public override void OnOpenDocument(PdfWriter writer, Document document)
        {
   
   
            try
            {
   
   
                BaseFontForHeaderFooter = BaseFont.CreateFont(FontFilePathForHeaderFooter, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                BaseFontForBody = BaseFont.CreateFont(FontFilePathForBody, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                Document = document;
            }
            catch (DocumentException de)
            {
   
   

            }
            catch (System.IO.IOException ioe)
            {
   
   

            }
        }

        #region GenerateHeader
        /// <summary>
        /// 生成页眉
        /// </summary>
        /// <param name="writer"></param>
        /// <returns></returns>
        public virtual PdfPTable GenerateHeader(iTextSharp.text.pdf.PdfWriter writer)
        {
   
   
            return null;
        }
        #endregion

        #region GenerateFooter
        /// <summary>
        /// 生成页脚
        /// </summary>
        /// <param name="writer"></param>
        /// <returns></returns>
        public virtual PdfPTable GenerateFooter(iTextSharp.text.pdf.PdfWriter writer)
        {
   
   
            BaseFont baseFont = BaseFontForHeaderFooter;
            iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, 10, iTextSharp.text.Font.NORMAL);

            PdfPTable footer = new PdfPTable(3);
            AddFooterCell(footer, "甲方项目经理:", font);
            AddFooterCell(footer, "乙方代表::", font);
            AddFooterCell(footer, "日期:", font);
            return footer;
        }

        private void AddFooterCell(PdfPTable foot, String text, iTextSharp.text.Font font)
        {
   
   
            PdfPCell cell = new PdfPCell();
            cell.BorderWidthTop = 2;
            cell.BorderWidthRight = 0;
            cell.BorderWidthBottom = 0;
            cell.BorderWidthLeft = 0;
            cell.Phrase = new Phrase(text, font);
            cell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
            foot.AddCell(cell);
        }
        #endregion

        public override void OnEndPage(iTextSharp.text.pdf.PdfWriter writer, iTextSharp.text.Document document)
        {
   
   
            base.OnEndPage(writer, document);

            ////输出页眉
            //Header = GenerateHeader(writer);
            //Header.TotalWidth = document.PageSize.Width - 20f;
            /////调用PdfTable的WriteSelectedRows方法。该方法以第一个参数作为开始行写入。
            /////第二个参数-1表示没有结束行,并且包含所写的所有行。
            /////第三个参数和第四个参数是开始写入的坐标x和y.
            //Header.WriteSelectedRows(0, -1, 10, document.PageSize.Height - 20, writer.DirectContent);

            //输出页脚
            Footer = GenerateFooter(writer);
            Footer.TotalWidth = document.PageSize.Width - 20f;
            Footer.WriteSelectedRows(0, -1, 10, document.PageSize.GetBottom(60), writer.DirectContent);
        }
    }

3、根据后台查出的数据画出PDF

 ///友情提示:在代码画PDF之前,最好自己先手动做一个范本(Excel),然后根据对应的行和列,代码画出
 [AllowAnonymous]
        public string BuildPdf(int srqrID)
        {
   
   
            //获取数据
            var srqr 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值