利用C#从pdf文档中批量提取图片和文本

 时间:2026-02-15 20:07:05

1、创建VS项目

2、编写提取图片的方法,代码如下:

private void ExtractImage(string pdfFile)

        {

            PdfReader pdfReader = new PdfReader(pdfFile);

            for (int pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++)

            {

                PdfReader pdf = new PdfReader(pdfFile);

                PdfDictionary pg = pdf.GetPageN(pageNumber);

                PdfDictionary res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));

                PdfDictionary xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));

                try 

                {

                    foreach (PdfName name in xobj.Keys)

                    {

                        PdfObject bj = xobj.Get(name);

                        if (obj.IsIndirect())

                        {

                            PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);

                            string width = tg.Get(PdfName.WIDTH).ToString();

                            string height = tg.Get(PdfName.HEIGHT).ToString();

                            //ImageRenderInfo imgRI = ImageRenderInfo.CreateForXObject((GraphicsState)new Matrix(float.Parse(width), float.Parse(height)), (PRIndirectReference)obj, tg);

                            ImageRenderInfo imgRI = ImageRenderInfo.CreateForXObject(new GraphicsState(), (PRIndirectReference)obj, tg);

                            RenderImage(imgRI);

                        }

                    }

                }catch

                {

                    continue;

                }

                

            }

        }

3、将图片保存到文件

private void RenderImage(ImageRenderInfo renderInfo)

        {

            count++;

            PdfImageObject image = renderInfo.GetImage();

            using (Dotnet dotnetImg = image.GetDrawingImage())

            {

                if (dotnetImg != null)

                {

                    using (MemoryStream ms = new MemoryStream())

                    {

                        dotnetImg.Save(ms, ImageFormat.Tiff);

                        Bitmap d = new Bitmap(dotnetImg);

                        d.Save(@"");

                    }

                }

            }

        }

4、从PDF提取文本

public void ExtractTextFromPDFPage(string pdfFile)

        {

            PdfReader reader = new PdfReader(pdfFile);

            

            int n = reader.NumberOfPages;

            for (int i = 1; i <= n; i++)

            {

                string text = PdfTextExtractor.GetTextFromPage(reader, i);

                

            }

            try { reader.Close(); }

            catch { }

        }

  • 性能测试报告
  • 如何将PDF转换成Excel文档?
  • word文档中,怎么把繁体字转换成简体字?
  • 水质检测ICP-MS开机流程
  • excel隐藏列怎么设置?
  • 热门搜索
    减肥饮食 大连海岛旅游攻略 吃什么能减肥 骑马与砍杀光明与黑暗攻略 普陀山攻略 怎么扫描二维码 用什么方法减肥最快 延禧攻略顺嫔 山楂荷叶茶能减肥 王翰简介