首页 > 学院 > 开发设计 > 正文

ITEXTSHARP学习整理

2019-11-17 02:22:57
字体:
来源:转载
供稿:网友

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;        }

  

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表