【发布时间】:2026-01-09 00:10:02
【问题描述】:
在我的 PDF 中,我有一个包含 10 张图片的页面。
我想将 PDF 文件拆分为 10 个单独的图像文件并将它们保存在单独的文件夹中。
请给我一个想法或示例解决方案。
我使用的是 c# 2008。
【问题讨论】:
在我的 PDF 中,我有一个包含 10 张图片的页面。
我想将 PDF 文件拆分为 10 个单独的图像文件并将它们保存在单独的文件夹中。
请给我一个想法或示例解决方案。
我使用的是 c# 2008。
【问题讨论】:
我不知道一年后这是否仍然相关,但我最近自己做了,所以我想我还是回答一下。
首先,您需要一个古老的 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();
}
根据您的硬件,每页花费的时间不应超过几秒钟。
【讨论】:
我假设您想从 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 工作。
【讨论】: