多页 PDF 转图片 JPG 再拼成一张长图,关键在第一步:把整份 PDF 按页批量导出成 JPG,分辨率统一(比如 150 dpi)、宽度统一(比如 900 像素),别一页页截图。接着看页数选拼法,十来页用画图手动贴,几十页以上用 ImageMagick 命令行或 Python Pillow 脚本竖向拼接,拼完再压一遍体积。
长图拼不齐,多半是导出设置、分辨率或页序命名没统一,图片本身没坏,不用重新导出整份 PDF,也不用换电脑。以下方法在 Windows 10/11 实测可用。
适用系统:Windows 10/11;最后更新:2026-10-14。
拼出来的长图为什么总是歪、糊、宽窄不一
在画图里一页页粘完,长图经常一边宽一边窄,接缝处还留白;换命令拼的时候又撞上 `unable to open image 'page-1.jpg': No such file or directory` 这类报错。原因大多出在导出环节:每页单独截图,或按默认参数导出,各页的宽度和清晰度就对不上了。
先把导出分辨率、页面宽度、文件命名这三处定下来,后面手动贴还是跑命令都能顺,省掉大量返工。
方法1 把 PDF 整份按页批量导出成 JPG
结论:一次性批量导出、分辨率定死,后面的拼接才成立;一页页截图是返工的源头。
导出环节最容易踩的是混格式和乱命名。同一批页面里混进 PNG,命令行拼接会直接报 `unable to open image`;文件名不带补零,排序会变成 page-1、page-10、page-2,长图的页序当场就乱。导完抽查第一页和最后一页,长宽像素完全一致再往下走。
操作步骤
- 用 PDF 阅读器打开文件,点「导出」或「转换为图片」,输出格式选 JPG,不要 PNG 和 JPG 混着用
- 在设置里把 DPI 固定成同一个值,例如 150 dpi,全篇不中途改
- 导出范围选全部页面,输出目录单独建一个文件夹,比如 `D:\pdf2jpg`
- 确认文件按页序自动命名,形如 page-01.jpg、page-02.jpg,两位补零方便命令行通配
- 导完抽查第一页和最后一页,尺寸不一致就退回上一步重设分辨率再导一遍
方法2 把所有页面图统一成同一个宽度
拼接前宽度必须先对齐,否则长图会出现一边宽一边窄的台阶。
改尺寸时注意选「按像素」而不是按百分比,百分比在不同页上算出来的像素值不一样。缩放的 JPG 每存一次就多一次压缩损失,质量给到 85 到 90 就够了,别反复存。
操作步骤
- 画图打开第一张图,点「调整大小」,「依据」一栏选「像素」
- 宽度填固定值,比如 900 像素,勾上「保持纵横比」,高度会自动等比缩放
- 把这个宽度值记下来,其余每一页都用它,不要逐页目测
- 页数多就别一张张改:用转换工具里的重置尺寸或批量处理,统一输出宽度 900
- 缩放后逐页确认像素宽度一致,再「另存为」JPG,质量选 85 到 90
方法3 用画图新建空白画布手动拼成一张长图
结论:页数不多、十来页以内时最省事,靠一张空白画布把页面从上到下贴满。
总高度不是估出来的,是算出来的:在文件资源管理器里右键逐张看属性里的像素高度,加起来就是画布高度。接缝是唯一要盯的地方,贴完放大到 100% 扫一遍,有半行白边就说明上一张没对齐。
操作步骤
- 先在文件属性里把各页高度相加,算出长图总高度,宽度取刚才统一的 900 像素
- 画图里点「文件」→「新建」,再点「重新调整大小」→「按像素」,宽度填 900、高度填总高度
- 在每页图上全选复制,回到大画布用「粘贴来源」依次贴入,按纵向逐页往下排
- 贴的时候用方向键微调对齐,接缝处放大到 100% 看有没有白边或重叠
- 全部贴完点「另存为」,格式选 JPG,得到一张从上到下的长图
用「软领PDF阅读转换器」更省事
第一步的排头难,可以用「软领PDF阅读转换器」的 PDF转图片 功能解决:它把整份 PDF 按页直接导出成 JPG 图片文件,分辨率统一、页序整齐,不用一页页截图,也省掉手动改宽度的麻烦,导完接着拼长图,接缝才对得齐。

软领是知名国产软件品牌,做了 20 年,服务千万用户;软件在软领官网 wyouhua.com 直接下载,安装过程没有捆绑勾选项。导出的图片都落在同一个输出文件夹里,长宽比例一致,拿去用 ImageMagick 或 Pillow 拼接不用再逐页改尺寸。

方法4 用 ImageMagick 命令行一次性竖向拼接
结论:页数几十页以上时,命令一条跑完,顺序和接缝都比手动稳。
ImageMagick 7 把老版的 convert 收进了 magick 主命令,写成 `convert` 可能提示找不到;`-append` 是竖向拼,写成 `+append` 就变成了横向一排。文件名补零尤其重要,否则 shell 会按字符顺序排成 page-1、page-10、page-2,拼出来首尾颠倒。
操作步骤
- 安装后在命令提示符里执行 `magick -version` 确认可用;提示找不到命令就是没配 PATH,重启终端再试
- 把页面图放进同一个目录,按页序命名成 page-01.jpg、page-02.jpg,两位补零
- 在该目录打开命令提示符,执行 `magick montage -mode concatenate -tile 1x page-*.jpg -quality 90 long.jpg`
- 另一种写法:`magick convert page-*.jpg -append long.jpg`,-append 竖向,+append 横向
- 拼完打开 long.jpg 核对页序,首尾颠倒就回去检查文件名是不是被排成了 page-1、page-10、page-2
方法5 用 Python Pillow 脚本自动拼接并控制画质
结论:宽度、高度、接缝留白都能自己控,适合要批量处理、反复出图的场景。
脚本里统一宽度这一步不能省,否则 paste 之后右边会露出画布底色。几百页的 PDF 一次性拼会很吃内存,拆成每 50 页一段、拼完再把段与段拼起来,成功率更高。保存时 quality 给 90,再低接缝附近的文字就开始发虚。
操作步骤
- 先执行 `pip install Pillow` 装库,脚本里写 `from PIL import Image`
- 用 `Image.open()` 逐张读入页面图,取第一张的宽度作为统一宽度,其余按这个值等比缩放
- 把每张的高度累加得到总高度,用 `Image.new('RGB', (宽, 总高), 'white')` 新建画布
- 循环 `paste(img, (0, y))` 逐页往下贴,y 每轮累加该页高度
- 最后 `canvas.save('long.jpg', quality=90)` 输出;几百页内存吃紧就改成两两分段拼再合
方法6 拼完压一遍体积并逐段检查接缝
结论:长图糊不糊、发不发得出去,取决于最后这一步有没有压缩和验收。
重编码的次数越多,细节掉得越狠,同一张图别来回存。长宽比太极端时聊天软件会拒绝预览,分段发送比硬压更实际。
操作步骤
- 长图太大发不出去,就回到导出环节把分辨率降到 120 dpi,或把 JPG 质量调到 80 到 85
- 用图片工具打开后「另存为」重新编码一次,通常能明显瘦身,不要反复存很多遍
- 放大到 100% 逐段检查:接缝有没有白边、错位、半页错插
- 页数特别多、长宽比过极端时,改成每 10 页拼一段再分段发送,避免单图超高无法预览
- 确认无误后统一改成一个好认的文件名,别再留着过程中的中间文件
常见问题
pdf转图片jpg后每张宽度不一样,怎么拼成一张长图?
先把所有页面统一到同一个像素宽度,比如 900,再拼。页数少就在画图里逐张「调整大小」按像素改,页数多就用转换工具批量处理或写一小段脚本,宽度对齐后长图才不会出现台阶。
ImageMagick 执行 montage -tile 1x 后拼接顺序乱了怎么解决?
一般是文件名没补零,被排成了 page-1、page-10、page-2。把文件重命名成 page-01、page-02 这类两位或三位格式,再重新跑一遍命令即可。
PDF 有几十页,拼成一张 pdf长图 会不会太大发不出去?
会。几十页 A4 按 150 dpi 拼起来轻松过 20 MB。把分辨率降到 120 dpi、JPG 质量设成 80 到 85,或者每 10 页拼一段分段发送。
Python Pillow 拼接长图时报 MemoryError 内存不够怎么办?
不要一次性把所有页读进内存。分两三个批次先各自拼成中间图,再把中间图拼起来;也能在读完每张后手动释放对象,降低峰值占用。
pdf整页转图片 用多少 dpi 才能既清楚又不太糊?
屏幕上看和发消息,150 dpi 够用;要打印或放大看细节,用 200 到 300 dpi。分辨率调高体积跟着涨,最后一步压缩时再降质量补回来。
推荐阅读
PDF转图片后清晰度不高怎么办,先判断源文件再统一参数批量导出
相关推荐
Word转PDF图片模糊,先分清是导出压缩还是转换DPI的问题
PDF转图片不清晰,先分清是导出DPI太低还是源文件本身模糊

提示