【问题标题】:Split the PDF file into image files using c# 2008?使用 c# 2008 将 PDF 文件拆分为图像文件?
【发布时间】:2026-01-09 00:10:02
【问题描述】:

在我的 PDF 中,我有一个包含 10 张图片的页面。

我想将 PDF 文件拆分为 10 个单独的图像文件并将它们保存在单独的文件夹中。

请给我一个想法或示例解决方案。

我使用的是 c# 2008。

【问题讨论】:

    标签: c# pdf


    【解决方案1】:

    我不知道一年后这是否仍然相关,但我最近自己做了,所以我想我还是回答一下。

    首先,您需要一个古老的 PS/PDF 解析/渲染/转换引擎 Ghostscript (http://sourceforge.net/projects/ghostscript/)。安装后,前往%PROGRAMDATA\gs\bin\(或x86,如果您运行的是x64 系统)并获取gsdll32.dll 并将其复制到您的/bin 文件夹中。

    然后您需要一个名为 Super PDF2Image Converter (http://www.softwaresigloxxi.com/downloading_superPDF2ImageConverter.html) 的封闭源 PDF 库,从 .zip 文件中获取 Pdf2Image.dll 并将其复制到您的 /bin 文件夹中。

    这是一个关于如何使用这两个库将多个 PDF 页面转换为图像的快速示例:

    using Pdf2Image;
    

    --

      const string _filename = "/3.pdf";
      // Instantiate the component
      var p2i = new Pdf2ImageConverter(_filename);
    
      // Get page count of a PDF file
      int pages = p2i.GetPageCount();
      Response.Write(pages);
    
      // loops through each page
      for (int i = 1; i < pages; i++)
      {
       // Get size of any page
       int width, height;
       p2i.GetPageSize(i, out width, out height);
    
       // converts the page to PNG format (returns bitmap object with original size)
       var pdfimage = p2i.GetImage(i, width, Pdf2ImageFormat.PNG);
       pdfimage.Save(string.Format("/{0}.png",i));
       pdfimage.Dispose();
      }
    

    根据您的硬件,每页花费的时间不应超过几秒钟。

    【讨论】:

      【解决方案2】:

      我假设您想从 PDF 文件中的特定页面提取图像并将这些图像保存到单独的文件中。

      如果我是对的,那么您可能想看看Docotic.Pdf library。以下示例展示了如何将 PDF 页面中的图像提取到指定文件夹中:

      static void ExtractImagesFromPdfPageIntoFolder()
      {
          string pathToPdf = "";
          int pageIndex = 0;
          string outputFolder = "";
          using (PdfDocument pdf = new PdfDocument(pathToPdf))
          {
              for (int i = 0; i < pdf.Pages[pageIndex].Images.Count; i++)
              {
                  string imageName = string.Format("image{0}", i);
                  string outputName = Path.Combine(outputFolder, imageName);
                  string savedPath = pdf.Pages[pageIndex].Images[i].Save(outputName);
              }
          }
      }
      

      免责声明:我为图书馆供应商 Bit Miracle 工作。

      【讨论】:

        最近更新 更多