程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> ITEXTSHARP學習整理,itextsharp整理

ITEXTSHARP學習整理,itextsharp整理

編輯:C#入門知識

ITEXTSHARP學習整理,itextsharp整理


  學習的版本iTextSharp.5.5.5。

關於獲取PDF中的圖片資源

  

        /// <summary>
        /// 將PDF中的圖片資源轉換成二進制
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public List<byte[]> ConvertImageData(string filePath)
        {
            List<byte[]> lst = new List<byte[]>();
            using (PdfReader pdf = new PdfReader(filePath))
            {
                for (int i = 1; i <= pdf.NumberOfPages; i++)
                {
                   byte[] result = null;
                PdfDictionary page = pdf.GetPageN(pageNum);
                PdfObject obj = FindImageInPDFDictionary(page);
                if (obj != null)
                {
                 PdfImageObject imageObj = null;
                  int XrefIndex = Convert.ToInt32(((PRIndirectReference)obj).Number.ToString(System.Globalization.CultureInfo.InvariantCulture));
                   PdfObject pdfObj = pdf.GetPdfObject(XrefIndex);
                   PRStream pdfStrem = (PRStream)pdfObj;
                   imageObj = new PdfImageObject(pdfStrem);
                   result = imageObj.GetImageAsBytes();
                }
                  lst.Add(result);
                }
            }
            return lst;

        }

 

       /// <summary>
       /// 提取圖片元素
       /// </summary>
       /// <param name="pg"></param>
       /// <returns></returns>
        private static PdfObject FindImageInPDFDictionary(PdfDictionary pg)
        { 
            PdfDictionary res = pg.GetAsDict(PdfName.RESOURCES);
            PdfDictionary xobj = res.GetAsDict(PdfName.XOBJECT);
            if (xobj != null)
            {
                foreach (PdfName name in xobj.Keys)
                {
                    PdfObject obj = xobj.Get(name);
                    if (obj.IsIndirect())
                    {
                        PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);
                        PdfName type = (PdfName)PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE)); 
                     
                        if (PdfName.IMAGE.Equals(type))
                        {
                            return obj;
                        }// image inside a form
                        else if (PdfName.FORM.Equals(type) || PdfName.GROUP.Equals(type))
                        {
                            return FindImageInPDFDictionary(tg);
                        }

                    }
                }
            }
            return null;
        }

  

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved