一個C#通過iTextSharp封裝的PDF檔案操作類代碼

來源:互聯網
上載者:User
這個C#代碼主要講iTextSharp中用於操作PDF檔案的方法進行了再次封裝,可以更加方便的訪問PDF文檔,可以動態產生PDF檔案、新增內容、設定段落、設定字型等。

using System.IO;using iTextSharp.text;using iTextSharp.text.pdf;  namespace DotNet.Utilities{    ///     /// PDF文檔操作類    ///     //------------------------------------調用--------------------------------------------    //PDFOperation pdf = new PDFOperation();    //pdf.Open(new FileStream(path, FileMode.Create));    //pdf.SetBaseFont(@"C:\Windows\Fonts\SIMHEI.TTF");    //pdf.AddParagraph("測試文檔(產生時間:" + DateTime.Now + ")", 15, 1, 20, 0, 0);    //pdf.Close();    //-------------------------------------------------------------------------------------    public class PDFOperation    {        #region 建構函式        ///         /// 建構函式        ///         public PDFOperation()        {            rect = PageSize.A4;            document = new Document(rect);        }          ///         /// 建構函式        ///         /// 頁面大小(如"A4")        public PDFOperation(string type)        {            SetPageSize(type);            document = new Document(rect);        }          ///         /// 建構函式        ///         /// 頁面大小(如"A4")        /// 內容距左邊框距離        /// 內容距右邊框距離        /// 內容距上邊框距離        /// 內容距下邊框距離        public PDFOperation(string type, float marginLeft, float marginRight, float marginTop, float marginBottom)        {            SetPageSize(type);            document = new Document(rect, marginLeft, marginRight, marginTop, marginBottom);        }        #endregion          #region 私人欄位        private Font font;        private Rectangle rect;   //文檔大小        private Document document;//文檔對象        private BaseFont basefont;//字型        #endregion          #region 設定字型        ///         /// 設定字型        ///         public void SetBaseFont(string path)        {            basefont = BaseFont.CreateFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);        }          ///         /// 設定字型        ///         /// 字型大小        public void SetFont(float size)        {            font = new Font(basefont, size);        }        #endregion          #region 設定頁面大小        ///         /// 設定頁面大小        ///         /// 頁面大小(如"A4")        public void SetPageSize(string type)        {            switch (type.Trim())            {                case "A4":                    rect = PageSize.A4;                    break;                case "A8":                    rect = PageSize.A8;                    break;            }        }        #endregion          #region 執行個體化文檔        ///         /// 執行個體化文檔        ///         /// 文檔相關資訊(如路徑,開啟檔案等)        public void GetInstance(Stream os)        {            PdfWriter.GetInstance(document, os);        }        #endregion          #region 開啟文檔對象        ///         /// 開啟文檔對象        ///         /// 文檔相關資訊(如路徑,開啟檔案等)        public void Open(Stream os)        {            GetInstance(os);            document.Open();        }        #endregion          #region 關閉開啟的文檔        ///         /// 關閉開啟的文檔        ///         public void Close()        {            document.Close();        }        #endregion          #region 添加段落        ///         /// 添加段落        ///         /// 內容        /// 字型大小        public void AddParagraph(string content, float fontsize)        {            SetFont(fontsize);            Paragraph pra = new Paragraph(content, font);            document.Add(pra);        }          ///         /// 添加段落        ///         /// 內容        /// 字型大小        /// 對齊(1為置中,0為居左,2為居右)        /// 段後空行數(0為預設值)        /// 段前空行數(0為預設值)        /// 行間距(0為預設值)        public void AddParagraph(string content, float fontsize, int Alignment, float SpacingAfter, float SpacingBefore, float MultipliedLeading)        {            SetFont(fontsize);            Paragraph pra = new Paragraph(content, font);            pra.Alignment = Alignment;            if (SpacingAfter != 0)            {                pra.SpacingAfter = SpacingAfter;            }            if (SpacingBefore != 0)            {                pra.SpacingBefore = SpacingBefore;            }            if (MultipliedLeading != 0)            {                pra.MultipliedLeading = MultipliedLeading;            }            document.Add(pra);        }        #endregion          #region 添加圖片        ///         /// 添加圖片        ///         /// 圖片路徑        /// 對齊(1為置中,0為居左,2為居右)        /// 圖片寬(0為預設值,如果寬度大於頁寬將按比率縮放)        /// 圖片高        public void AddImage(string path, int Alignment, float newWidth, float newHeight)        {            Image img = Image.GetInstance(path);            img.Alignment = Alignment;            if (newWidth != 0)            {                img.ScaleAbsolute(newWidth, newHeight);            }            else            {                if (img.Width > PageSize.A4.Width)                {                    img.ScaleAbsolute(rect.Width, img.Width * img.Height / rect.Height);                }            }            document.Add(img);        }        #endregion          #region 添加連結、點        ///         /// 添加連結        ///         /// 連結文字        /// 字型大小        /// 連結地址        public void AddAnchorReference(string Content, float FontSize, string Reference)        {            SetFont(FontSize);            Anchor auc = new Anchor(Content, font);            auc.Reference = Reference;            document.Add(auc);        }          ///         /// 添加連結點        ///         /// 連結文字        /// 字型大小        /// 連結點名        public void AddAnchorName(string Content, float FontSize, string Name)        {            SetFont(FontSize);            Anchor auc = new Anchor(Content, font);            auc.Name = Name;            document.Add(auc);        }        #endregion    }}
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.