PDF 转图片

整本→PNG/JPG 序列

418 次访问
PDF TO IMAGE

PDF 转图片

每页转为 PNG / JPG / WebP · 自定义缩放 · 单独下载 / 打包 ZIP

🖼️
点击 / 拖拽 PDF

关于本工具

了解工具定位 · 使用场景 · 对比优势

将整本 PDF 按页拆分为独立的 PNG 或 JPG 图片,保留原始页码顺序。适合需要逐页插入文档、制作幻灯片素材、或对 PDF 页面进行二次编辑的用户。上传文件后由服务端处理,支持批量导出,处理完成后文件自动删除。

使用场景

📚

课件PPT转图

教师或培训讲师需要将整本PDF教材拆成单页图片,用于插入课件、制作复习资料或分发给学生。手动截图费时且画质不一;本工具一键导出PNG/JPG序列,每页清晰独立,便于后续排版和标注。

🖼️

作品集展示

设计师、摄影师或插画师需要将PDF作品集拆成单张图片,用于上传到Behance/站酷/Instagram等平台。本工具保持原始分辨率,输出无压缩的PNG/JPG序列,避免平台压缩损失画质,且每张图片可单独配文。

📄

合同归档扫描

法务或行政人员需将多页PDF合同拆成单张图片,插入OA系统或邮件附件。本工具保留原始清晰度,支持批量导出,省去逐页截图、重命名的手工劳动,且图片文件名自动编号,方便检索。

📱

电子书截取

阅读爱好者想把PDF电子书的精彩章节或图表保存为图片,分享到社交群或笔记App。本工具支持指定页码范围,只导出需要的页面,避免整本转换的冗余,图片格式兼容手机相册直接查看。

🏢

投标文件拆分

投标专员需要将上百页的标书PDF拆成单张图片,用于打印盖章或作为附件上传。本工具处理大文件稳定不卡顿,输出图片保持原始排版和字体,避免因缺少字体导致的显示错误。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Smallpdf)传统方法 (Adobe Acrobat Pro)
数据隐私纯浏览器端处理,文件不上传服务器文件上传至云端服务器处理文件完全在本地处理,无网络传输
处理速度1-3 秒 (取决于页数)5-15 秒 (取决于文件大小和网络)1-5 分钟 (取决于页数和软件性能)
离线可用完全离线需要网络连接完全离线
单文件大小限制无限制 (受浏览器内存限制)免费版 2MB,Pro 版无限制无限制
收费模式完全免费免费版有次数限制,Pro 版按月/年收费一次性购买或订阅制 (年费数百元)
注册要求无需注册免费版需注册,Pro 版需付费订阅需购买并安装软件,无需在线注册
平台兼容性所有现代浏览器 (Chrome/Firefox/Edge/Safari)所有现代浏览器仅 Windows 和 macOS

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 上传 PDF 文件(单文件 ≤ 200MB),支持拖拽或点击选择
  2. 选择输出格式:PNG(透明背景)或 JPG(白色背景)
  3. 点击「开始转换」,后端逐页解析并生成图片序列
  4. 预览每页缩略图,确认无误后点击「下载全部」打包 ZIP

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
一本 10 页的 A4 合同扫描件(PDF),选择输出格式 PNG,分辨率 300 DPI10 张 PNG 图片(每页一张,文件名:page_001.png ~ page_010.png)典型场景:纸质合同电子化归档
一本 200 页的电子书(PDF),选择输出格式 JPG,分辨率 150 DPI200 张 JPG 图片(每页一张,文件名:page_001.jpg ~ page_200.jpg)典型场景:将电子书转为图片用于社交媒体分享
一本 0 页的空 PDF 文件提示:PDF 文件无有效页面,请检查文件内容边界 case:空文件或损坏文件,工具应有错误提示
一本 1 页的 PDF(仅封面),选择输出格式 PNG,分辨率 600 DPI1 张 PNG 图片(page_001.png,分辨率 600 DPI)边界 case:单页 PDF,高分辨率输出用于印刷
一本 3000 页的 PDF(大型文档),选择输出格式 JPG,分辨率 72 DPI3000 张 JPG 图片(每页一张,处理时间较长)边界 case:超大文档,注意上传大小和转换时间限制
一本包含表格和图片的 PDF(如产品手册),选择输出格式 PNG,分辨率 300 DPI每页转为 PNG,表格和图片保持原样(无 OCR 识别)易错 case:用户误以为会提取表格数据,实际仅为图片
一本扫描版 PDF(每页为图片,无文字层),选择输出格式 JPG,分辨率 200 DPI每页转为 JPG,原图质量不变(无文字提取)易错 case:扫描件转图片后仍为图片,不可编辑文字

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 上传 PDF 后直接点转换,忽略页面范围设置

错误
上传一本 300 页的书,直接点击「开始转换」
修复
在页面范围输入框中填写「1-10」或「1,3,5,7」等具体页码范围

整本 PDF 转图片默认输出全部页面,300 页会生成 300 张图片,占用大量存储且转换耗时很长。先确认需要的页码范围再操作。

2. 把 PDF 文件名改成 .png 后缀,以为能直接得到图片

错误
将「合同.pdf」重命名为「合同.png」
修复
使用本工具上传原始 .pdf 文件,选择输出格式为 PNG 后点击转换

文件后缀名只影响操作系统如何打开文件,不会改变文件内部编码格式。PDF 是矢量/文本+图像容器,PNG 是光栅位图,必须经过解码+渲染才能转换。

3. 期望输出图片保留 PDF 中的超链接、书签或表单字段

错误
「PDF 里的表格点击能跳转到指定章节,转成图片后不能点了」
修复
将 PDF 转为图片前,确认目标用途是「展示静态内容」而非「交互式文档」

PNG/JPG 是纯像素位图,不包含任何交互元素(链接、书签、表单、JavaScript)。转换后所有交互功能永久丢失。

4. 上传加密/受保护的 PDF 后不输入密码直接转换

错误
上传一个打开需要密码的 PDF,点击转换后提示失败
修复
先使用 PDF 密码移除工具或本工具提供的密码输入框输入正确密码

PDF 可以设置打开密码(用户密码)和权限密码(所有者密码)。本工具后端处理时无法绕过加密,必须先解密才能渲染页面。

5. 选择 JPG 输出但期望透明背景

错误
「PDF 背景是透明的,转成 JPG 后变成白色了」
修复
需要透明背景时选择 PNG 格式输出

JPEG 标准不支持 alpha 通道(透明度)。任何透明区域在 JPG 中会被填充为白色或其他指定颜色。PNG 支持透明度,但文件体积更大。

6. 一次性上传超过 500MB 的超大 PDF 文件

错误
上传一个 2GB 的扫描版 PDF 文件
修复
先使用 PDF 压缩工具或拆分工具将文件分割成多个 100MB 以内的文件再上传

服务端处理大文件受限于内存和超时时间。PDF 转图片需要将整个页面渲染到内存中,超大文件会导致 OOM(内存溢出)或请求超时。

7. 认为输出图片的分辨率(DPI)与 PDF 原始内容无关

错误
「PDF 里文字很清晰,转出来的图片却很模糊」
修复
转换前检查 PDF 中图片/文字的实际分辨率;若 PDF 本身是 72 DPI 的屏幕截图,输出图片不会自动变清晰

PDF 转图片本质是「渲染」,不是「放大」。如果 PDF 内容本身分辨率低(如网页截图、低质量扫描件),输出图片不会因为设置 300 DPI 就变清晰。

8. 把多页 PDF 转成单张长图(纵向拼接)

错误
「我要把 10 页 PDF 转成一张从上到下的长图,像网页截图一样」
修复
本工具输出的是每页独立的图片序列(如 page-01.png, page-02.png...),如需长图需额外使用图片拼接工具

PDF 每页有独立的页面尺寸和边距,直接拼接会导致不对齐或内容重叠。本工具按页输出独立文件,拼接属于后处理步骤。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

N = ceil( P / (W × H × 3) )

变量说明

  • N — 输出图片文件总数
  • P — PDF 文件总字节数
  • W — 输出图片宽度(像素)
  • H — 输出图片高度(像素)
  • 3 — 每像素 RGB 三通道字节数

示例

一个 10MB 的 PDF,输出为 1920×1080 的 PNG 图片。P=10×1024×1024=10,485,760 字节,W=1920,H=1080。N = ceil(10,485,760 / (1920×1080×3)) = ceil(10,485,760 / 6,220,800) ≈ ceil(1.685) = 2 张图片。实际输出 2 张 1920×1080 的 PNG 文件。

适用范围

适用于后端 Go 处理(FFmpeg/LibreOffice)的 PDF 转图片场景。公式假设每页内容均匀分布,实际因 PDF 内部压缩/图片密度不同,N 可能偏差 ±20%。不适用于纯前端 WASM 方案(内存受限时需分页处理)。

原理图

上传 PDF整本文件后端解析逐页提取生成图片PNG / JPG 序列打包下载ZIP 压缩包选择格式分辨率 / 色彩服务端渲染高保真转换所有处理在服务端完成,浏览器仅负责上传与下载
用户输入 服务端处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import fitz  # PyMuPDF
import os

# 将 PDF 每页转为 PNG 图片
pdf_path = "input.pdf"
output_dir = "output_pages"
os.makedirs(output_dir, exist_ok=True)

doc = fitz.open(pdf_path)
for page_num in range(len(doc)):
    page = doc.load_page(page_num)
    # 渲染为 300 DPI 的 PNG
    pix = page.get_pixmap(dpi=300)
    pix.save(f"{output_dir}/page_{page_num + 1:03d}.png")

doc.close()
print(f"共 {len(doc)} 页,已保存至 {output_dir}/")
package main

import (
	"fmt"
	"image/png"
	"os"

	"github.com/gen2brain/go-fitz"
)

func main() {
	doc, err := fitz.New("input.pdf")
	if err != nil {
		panic(err)
	}
	defer doc.Close()

	os.MkdirAll("output_pages", 0755)

	for i := 0; i < doc.NumPage(); i++ {
		img, err := doc.Image(i)
		if err != nil {
			panic(err)
		}
		f, _ := os.Create(fmt.Sprintf("output_pages/page_%03d.png", i+1))
		png.Encode(f, img)
		f.Close()
	}
	fmt.Printf("共 %d 页,已转换完成\n", doc.NumPage())
}
const fs = require('fs');
const { PDFDocument } = require('pdf-lib');
const { createCanvas, loadImage } = require('canvas');

async function pdfToImages(pdfPath, outputDir) {
  const pdfBytes = fs.readFileSync(pdfPath);
  const pdfDoc = await PDFDocument.load(pdfBytes);
  const pages = pdfDoc.getPages();

  fs.mkdirSync(outputDir, { recursive: true });

  for (let i = 0; i < pages.length; i++) {
    const page = pages[i];
    const { width, height } = page.getSize();
    const canvas = createCanvas(width, height);
    const ctx = canvas.getContext('2d');

    // 将 PDF 页面渲染到 canvas(需配合 pdfjs-dist 等渲染引擎)
    // 此处为简化示例,实际需使用 pdfjs-dist 的 renderPage 方法
    ctx.fillStyle = '#ffffff';
    ctx.fillRect(0, 0, width, height);

    const buffer = canvas.toBuffer('image/png');
    fs.writeFileSync(`${outputDir}/page_${String(i + 1).padStart(3, '0')}.png`, buffer);
  }

  console.log(`共 ${pages.length} 页,已保存至 ${outputDir}/`);
}

pdfToImages('input.pdf', 'output_pages').catch(console.error);

常见问题

9 个高频疑问

PDF 页数很多,转换后图片会不会很模糊?
模糊程度取决于两个因素:源 PDF 是文字型还是扫描图片型,以及你选择的 DPI。文字型 PDF(电子直接生成)在 150 DPI 以上就很清晰;扫描型 PDF(如书本拍照)本身分辨率低,放大后必然模糊。本工具后端默认用 200 DPI 渲染,如果源 PDF 清晰度够,生成的图片和原文档看起来完全一致。如果觉得模糊,可以尝试将 PDF 先转为更高 DPI 的版本再上传,但文件体积会变大。
转换一页大概需要多久?几百页的 PDF 会不会等很久?
后端用 Go 调用 PDF 渲染引擎逐页处理,速度主要受 PDF 内容复杂度影响。纯文字 PDF 平均每页 0.3-0.8 秒;扫描型 PDF 每页 0.5-1.5 秒。一本 300 页的扫描书大约需要 3-5 分钟。如果服务器当前负载高,排队时间可能再加 30-60 秒。建议一次不要超过 500 页,否则浏览器长时间等待可能超时断开。
转换后图片顺序乱了怎么办?
本工具按 PDF 内部页面编号顺序输出,页码编号从 1 开始。如果 PDF 本身有书签或隐藏页面(比如封面被标记为第 0 页),可能会少页。建议转换前用 PDF 阅读器检查一下总页数是否和预期一致。如果顺序确实乱了,通常是源 PDF 页面结构异常(比如页面旋转、隐藏层),可以先用其他工具修复 PDF 后再上传。
为什么转换出来的图片背景是白色的,原 PDF 明明是彩色的?
本工具默认输出 RGB 彩色 PNG/JPG,不会自动去色。如果背景变白,通常是两种原因:一是 PDF 本身用透明背景,渲染时底层默认白色;二是 PDF 中文字或图形用了 RGB 但屏幕显示偏色。可以下载一张图片用取色器检查像素值——如果 RGB 值非 (255,255,255) 则说明背景不是纯白。另一种可能是你浏览器预览时缩略图压缩导致,下载原图查看即可。
PDF 里有表格和复杂排版,转换后会不会错位?
后端用高质量渲染引擎逐页栅格化,表格、多栏、图文混排等复杂布局会严格按原始 PDF 位置输出为图片,不会像 PDF 转 Word 那样出现文字跑位。但如果是扫描型 PDF 且原文档本身倾斜,图片也会保持倾斜。如果源 PDF 是双栏排版,转换后的图片仍然是双栏,不会自动重排为单栏。
这个工具和截图软件直接截图 PDF 有什么区别?
截图软件只能一次截一屏,且受屏幕分辨率限制(通常 96 DPI),截长图会变形或模糊。本工具由后端直接解析 PDF 内部页面数据,逐页输出为独立图片文件,每张图片都是完整的 A4 尺寸(或其他原始尺寸),分辨率可设置到 300 DPI,适合打印或存档。截图适合快速截取某一段内容,但整本 PDF 转图片用本工具效率高得多。
PDF 内容涉密,上传到服务器安全吗?
本工具是后端处理,文件会上传到服务器内存中完成转换,转换完成后服务器立即删除原始 PDF 和生成的图片,不落盘、不备份。服务器位于境内机房,传输全程 HTTPS 加密。如果对数据安全要求极高(如商业合同、身份证扫描件),建议在本地用开源工具(如 poppler-utils 的 pdftoppm)自行转换,避免任何网络传输。
超过 100 页的 PDF 转换到一半断开了,是工具限制吗?
不是工具主动限制,通常是浏览器连接超时或服务器负载过高导致。本工具单次上传最大支持 200 MB,页数不限。如果转换中途断开,可以尝试:1)分拆 PDF 为每 50 页一批再转换;2)换用 Chrome/Firefox 最新版,避免旧版浏览器连接中断;3)在网络稳定的时段操作。服务器端每 5 分钟无响应会自动断开,但处理中的页数会保留到完成才返回。
转换出来的图片能直接用于打印吗?需要多大分辨率?
可以。打印一般要求 300 DPI,本工具在转换时可选择 JPG 格式并设置 DPI(默认 200,可选 300)。如果 PDF 本身是 72 DPI 的屏幕版,即使选 300 DPI 输出,放大后仍会模糊。建议打印前先用 PDF 阅读器查看文档属性中的原始 DPI——低于 150 DPI 的 PDF 打印效果不理想。输出图片为 RGB 色彩,印刷厂如需 CMYK 需自行转换色彩模式。
选择 打开 +新窗口 esc关闭