如何在 Node.js 中将 PDF 转换为图像文件

如何在Node.js中将PDF转换为图像文件

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Node.js通过单一方法调用将PDF页面转换为图像。 rasterizeToImageFiles 方法可将任何 PDF(单页或多页)转换为 PNG、JPG、GIF、BMP 等格式,并能直接控制输出分辨率和页面选择。

方法自动检测您提供的文件扩展名中的输出格式,因此在格式之间切换不需要配置更改。 在无法更改扩展名的环境中,显式的 ImageType 枚举值将覆盖基于扩展名的检测。 IronPDF Node.js文档涵盖支持的输入来源的全范围,包括文件路径、字节缓冲区、转换为PDF的HTML字符串,以及栅格化之前的。

快速入门:将PDF转换为PNG

  1. 安装 IronPDF:npm install @ironsoftware/ironpdf
  2. 从包中导入 PdfDocument
  3. 加载您的 PDF 文件 PdfDocument.fromFile()
  4. 调用 rasterizeToImageFiles() 并指定输出路径
//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-pdf-to-image/quickstart.js
import { PdfDocument } from "@ironsoftware/ironpdf";

PdfDocument.fromFile("./sample.pdf").then((pdf) => {
    pdf.rasterizeToImageFiles("./output.png");
});

如何安装 IronPDF for Node.js?

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

从npm安装IronPDF的Node.js包以将PDF转换为PNG、JPG、GIF、BMP和其他图像格式。

在生产中将PDF转换为图像之前,配置您的许可证密钥。 该包还需要在您的系统上安装IronPDF引擎——这个二进制文件处理所有PDF渲染操作,并必须存在以进行转换。

系统要求是什么?

需要Node.js 12或更高。 IronPDF引擎二进制文件首次加载包时会自动下载,但如果您的部署环境限制出站网络访问,您也可以手动安装@ironsoftware/ironpdf 包已在 npm 注册表中发布,且无需进行原生模块编译步骤,从而使持续集成 (CI) 管道保持简洁。

请注意在开发过程中不需要许可证密钥。 在未授权模式下会生成带水印的输出。)] 水印将在配置有效密钥后移除。)]

如何将 PDF 转换为图像?

rasterizeToImageFiles 方法读取 PDF 文档,并将每页内容写入您指定的输出路径中,生成一个图像文件。对于单页 PDF,该方法将生成恰好一个图像文件。 对于多页PDF,它会自动在每个文件名后追加页码后缀。

下面的示例加载一个来自Learning Container的示例PDF,并将其转换为PNG文件。

PDF 阅读器显示的单页 Lorem Ipsum 示例文档,该文档在 PDF 转图像转换前用作输入 在查看器中打开的示例PDF文件。 从Learning Container下载此文件和其他测试PDF。

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-pdf-to-image/convert-to-png.js
import { PdfDocument } from "@ironsoftware/ironpdf";

// Load the PDF and convert it to a PNG image.
// The output path determines the format — change .png to .jpg for JPEG output.
PdfDocument.fromFile("./sample-pdf-file.pdf").then((pdf) => {
    pdf.rasterizeToImageFiles("./images/sample-pdf-file.png");
    return pdf;
}).catch((error) => {
    console.error("Error converting PDF to image:", error);
});

PdfDocument.fromFile 加载 PDF 并返回一个 Promise,该 Promise 解析为 PdfDocument 对象。 .then 回调函数接收已解析的文档,并使用目标路径调用 rasterizeToImageFiles。 路径中的文件扩展名(此处为 .png)用于告知 IronPDF 生成何种格式。 .catch 代码块用于处理任何读取或转换错误。

显示 Lorem Ipsum 文档内容渲染为 PNG 图像的转换后输出文件 从上述示例PDF生成的PNG。 IronPDF仅用三行代码转换了文档。

有关此方法选项的更多详细示例,请参见PDF到图片代码示例页面

如何将PDF转换为JPEG格式?

格式选择为自动模式:您传递给 rasterizeToImageFiles 的扩展名将决定输出格式。 要生成JPEG而不是PNG,请更改目标路径中的扩展名:

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-pdf-to-image/convert-to-jpeg-extension.js
// Switch to JPEG by changing the file extension in the output path.
pdf.rasterizeToImageFiles("./images/pdf-to-jpeg.jpg");

当无法控制输出文件名时(例如在采用固定命名规则的自动化管道中),请在选项对象中传入 ImageType 值以覆盖基于扩展名的检测:

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-pdf-to-image/convert-to-jpeg-imagetype.js
import { PdfDocument, ImageType } from "@ironsoftware/ironpdf";

// ImageType.JPG forces JPEG output regardless of the file extension.
const options = {
    type: ImageType.JPG,
    dpi: 300
};
PdfDocument.fromFile("./sample-pdf-file.pdf").then((pdf) => {
    pdf.rasterizeToImageFiles("./images/output.png", options);
    return pdf;
});

选项对象中的 type 属性优先于文件名扩展名。 在上例中,即使目标路径以 .png 结尾,rasterizeToImageFiles 仍会生成一个 JPEG 文件。 相同的模式适用于GIF和BMP输出。

DPI设置如何影响输出质量?

options 对象中的 dpi 属性用于控制栅格化输出的像素密度。 更高的值生成更大的文件,细节更多; 较低的值减小文件大小,但会损失清晰度。

提示设置 dpi: 300 可生成适合高分辨率打印或归档的印刷级图像。 (用于屏幕显示或生成缩略图时,dpi: 96 可在保持网络使用所需清晰度的同时减小文件大小。

150 DPI是大多数归档或预览场景的合理默认值 — 输出足够清晰以便在屏幕上阅读,并且文件大小保持在可控范围。 对于将在转换后打印或进行OCR处理的内容,建议使用300 DPI或更高。

如何将多页PDF转换为图片?

对于多页文档,rasterizeToImageFiles 会为每页生成一张图片。 IronPDF在每个输出文件名后面追加基于零的页索引,使输出无需额外代码即可保持有序。

在查看器中打开的两页 PDF 文档,显示图像转换前的两页示例内容 一个两页的示例PDF。 IronPDF在转换过程中为每页创建一个图像文件。

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-pdf-to-image/convert-multipage.js
import { PdfDocument } from "@ironsoftware/ironpdf";

// Each page of the PDF becomes a separate image file.
// Output filenames: multipage-pdf-page_1.png, multipage-pdf-page_2.png, etc.
PdfDocument.fromFile("./multipage-pdf.pdf").then((pdf) => {
    pdf.rasterizeToImageFiles("./images/multipage-pdf/multipage-pdf-page.png");
});

由上文的两页 PDF 生成的两个 PNG 输出文件 — multipage-pdf-page_1.png 和 multipage-pdf-page_2.png —— 从两页PDF生成的两个PNG文件。 IronPDF使用其页码命名每个输出文件。

此自动页面分割行为适用于所有支持的图像格式。 结合下一节中的 fromPages 选项,可仅转换大型文档中的特定页面。 为了向相反方向操作,请查看图片到PDF示例以了解如何将多个图像文件合并成一个PDF文档。

输出文件名是如何构建的?

文件名模式使用基于一的页码附加在文件扩展名前。 如果输出路径为 ./images/report-page.png,则三页的 PDF 文件将生成 report-page_2.pngreport-page_3.png。 调用 rasterizeToImageFiles 之前,输出目录必须已存在——该方法不会自动创建缺失的目录。

重要在调用 rasterizeToImageFiles 之前,请先创建输出目录。 如果目标目录不存在,该方法会抛出错误。请使用 Node.js 的 fs.mkdirSync('./images/output', { recursive: true }) 提前创建该目录。)}]

如何只转换特定页面?

options 对象中的 fromPages 属性接受一个以零为起点的页面索引数组。 仅提指定的页面被栅格化; 所有其他页面被跳过。 这是处理大型PDF时很有用,只需部分页面时 — 例如,为文档预览提取封面和段落起始页面。 若需在转换前对单个页面进行操作,PdfDocument 的 Node.js API 参考文档中详细说明了其他页面级操作。

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-pdf-to-image/convert-selective-pages.js
import { PdfDocument, ImageType } from "@ironsoftware/ironpdf";

// Convert only pages 1, 4, 6, and 9 (zero-indexed: 0, 3, 5, 8) to BMP.
const options = {
    type: ImageType.BMP,
    fromPages: [0, 3, 5, 8],
    dpi: 150
};
PdfDocument.fromFile("./sample-pdf-with-images.pdf").then((pdf) => {
    pdf.rasterizeToImageFiles(
        "./images/multipage-selective-pdf/multipage-pdf-page.bmp",
        options
    );
}).catch((error) => {
    console.error("Failed to convert pages:", error);
});

由一个大型 PDF 生成的四个 BMP 输出文件,分别标记为 multipage-pdf-page_1、page_4、page_7 和 page_9 IronPDF 仅对 fromPages 数组中指定的四页进行了光栅化处理。 其他页面未处理。

fromPages 中的页码采用从零开始的计数方式,因此 [0, 3, 5, 8] 对应的是第 1、4、6 和 9 页。 150的DPI值在输出质量与文件大小之间取得了平衡 — 适合归档或预览用例。 选择性转换适用于所有已支持的图像类型。

请注意从Learning Container下载示例PDF与图片用于上例。

零基和一基页码之间有什么区别?

fromPages 采用从零开始的索引方式,符合 JavaScript 的标准数组规范。 文档第 1 页对应索引 0,第 2 页对应索引 1,依此类推。 这与PDF查看器中出现的一基页码不同。 将阅读器中的页码转换为 fromPages 索引时,请将每个页码减去 1。

提示若需转换 PDF 的最后一页,且事先未知总页数,请使用 PdfDocument API 中的 pdf.pageCount() 读取页数,并将 [pdf.pageCount() - 1] 作为 fromPages 的值。

PDF到图像转换的下一步是什么?

IronPDF 的 rasterizeToImageFiles 方法通过统一的 API 处理格式选择、多页拆分以及选定页面的转换。 选项对象是格式覆盖、DPI控制和页面过滤的唯一扩展点。

此外,IronPDF for Node.js API 参考文档详细记录了 rasterizeToImageFilesPdfDocument 类中所有可用的参数。 PDF 转图像的代码示例展示了 rasterizeToImageFiles 配合额外配置的使用方式。 为了相反方向的操作,请查看图片到PDF文件转换多帧TIFF文件到PDF转换

开始IronPDF for Node.js的免费试用,以在您自己的项目中测试PDF到图像的转换。 查看许可选项以找到适合您团队的计划。

准备看看IronPDF还能做些什么吗? 在此查看完整的Node.js教程:Node.js中的HTML到PDF转换

常见问题解答

如何在 Node.js 中将 PDF 转换为图像?

使用IronPDF的rasterizeToImageFiles方法。通过npm install @ironsoftware/ironpdf安装包,用PdfDocument.fromFile()加载您的PDF,然后用输出路径调用rasterizeToImageFiles()。文件扩展名自动确定输出格式。

rasterizeToImageFiles支持哪些图像格式?

IronPDF支持PNG、JPG、GIF和BMP输出。格式通过输出路径中的文件扩展名检测。如需覆盖此设置,在选项对象中传入ImageType枚举值,例如{ type: ImageType.JPG }强制输出JPEG格式,不论文件名扩展名为何。

如何仅转换PDF的特定页面为图像?

在选项对象中传递fromPages数组。数组接受零基页面索引,因此fromPages: [0, 2, 4]转换第一、三、五页。数组中未列出的页面将被跳过。

要进行PDF到图像转换应该使用什么DPI?

在选项对象中设置dpi属性。对于屏幕显示和缩略图使用dpi: 96,对于归档和预览使用dpi: 150,对于打印质量输出或转换后需要OCR处理的内容使用dpi: 300

在Node.js中安装IronPDF的要求是什么?

需要Node.js 12或更高版本。通过npm install @ironsoftware/ironpdf安装包。IronPDF引擎二进制文件在首次使用时自动下载并处理所有PDF渲染。对于生产环境,需配置许可证密钥以去除输出水印。

多页PDF的输出文件名结构是怎样的?

IronPDF在文件扩展名之前添加基于一的页码。如果输出路径为report-page.png,则三页PDF将产生report-page_1.pngreport-page_2.pngreport-page_3.png。在调用该方法之前,输出目录必须存在。

在Node.js中PDF到图像的转换是异步的吗?

是的。PdfDocument.fromFile()rasterizeToImageFiles()都返回Promise。用.then()链式调用处理成功路径,用.catch()处理转换错误。您也可以使用async/await语法。

Darrius Serrant
全栈软件工程师(WebOps)

Darrius Serrant 拥有迈阿密大学的计算机科学学士学位,目前在 Iron Software 担任全栈 WebOps 市场工程师。从小就被编码吸引,他认为计算机既神秘又易于接触,使其成为创意和问题解决的理想媒介。

在 Iron Software,Darrius 喜欢创造新事物,并简化复杂概念以使其更易理解。作为我们常驻的开发者之一,他还自愿教授学生,与下一代分享他的专业知识。

对于 Darrius 来说,他的工作令人满意,因为它被重视并产生真正的影响。

准备开始了吗?
版本: 2026.5 just released
Still Scrolling Icon

还在滚动吗?

想快速获得证据?
运行示例看着你的HTML代码变成PDF文件。