图片转 PDF

多图合一 PDF

411 次访问
IMAGES TO PDF

图片转 PDF

多张 JPG / PNG / WebP 按顺序合并为 PDF

🖼️ → 📄
点击 / 拖拽多张图片

关于本工具

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

将多张图片合并为一个 PDF 文件,支持 JPG、PNG、WebP 等常见格式。适合整理扫描件、课件截图、聊天记录等零散图片,生成一份可打印、可分享的文档。图片上传后由服务端处理,不保留原始文件,处理完成后自动删除。

使用场景

📄

合同扫描归档

企业行政人员需将多页合同、协议逐页扫描为图片,再合并为一份 PDF 发给法务或客户。逐张发送图片易丢失、顺序错乱,且对方接收后无法直接批注。使用本工具一次性上传所有扫描件,自动按文件名或拖拽顺序合并为单文件 PDF,文件体积比原图缩小 60%-80%,便于邮件附件传输和长期存档。

📚

课件笔记整理

学生用手机拍摄黑板板书或教材多页,课后需将零散照片整理为可打印的笔记。单独保存图片占用相册空间,且打印时需逐张调整尺寸。本工具将多张照片按拍摄顺序合并为 PDF,自动将横向图片旋转为统一方向,生成 A4 标准尺寸文档,直接发送至打印机或分享给同学。

🖼️

电子发票归集

财务人员每月需收集数十张电子发票截图、报销单照片,分别保存为图片时,文件夹混乱且无法全文搜索。利用本工具将所有发票图片合并为单文件 PDF,配合 OCR 软件可对 PDF 内文字进行检索,同时保留原始图片分辨率,满足税务审计对发票清晰度的要求。

📋

产品图册制作

电商运营需将多款产品的白底图、详情页截图组合为一份发给美工或客户审阅。逐一发送图片无法保证对方按顺序查看,且微信传输会压缩画质。本工具支持原图上传,合并后保持每张图片的原始分辨率与色彩,生成连贯的图册 PDF,客户可直接在 PDF 内标注修改意见。

📑

证件材料提交

申请签证、入职或贷款时,需将身份证、户口本、学历证书等多页证件照片合并为一个 PDF 文件上传至政务平台。每张图片需单独命名且大小不超过 5MB。本工具自动将多张图片压缩至平台要求尺寸内,合并后文件大小可控,避免因单张上传遗漏或格式不符被退回。

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

维度本工具竞品 A传统方法
数据隐私纯浏览器处理,文件不上传服务器上传至云端服务器处理文件经手多人,存在泄露风险
处理速度即时完成(毫秒级)依赖上传下载,5-15 秒手动操作,数分钟至数小时
离线可用完全离线,无需网络必须联网无需网络
大小限制取决于浏览器内存,通常 100MB+通常 10-50MB 免费限制无硬性限制
收费模式免费无限制免费版有水印/页数限制需购买软件或打印店付费
批量处理支持多图一键合并部分支持,免费版有限逐张添加,效率低
平台兼容所有现代浏览器(PC/手机)需安装客户端或特定浏览器依赖电脑及专业软件

使用指南

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

使用步骤

  1. 上传或拖入 JPG/PNG/WebP 图片,支持一次选择多张,单张 ≤ 50MB
  2. 拖动图片缩略图调整排序,点击「×」移除不需要的图片
  3. 点击「开始转换」按钮,后端将多图合并为一个 PDF 文件
  4. 转换完成后点击「下载」保存 PDF,或点击「继续添加」追加更多图片

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

输入输出说明
上传 3 张 JPG 图片(尺寸 1920×1080,总大小 5MB)生成一个包含 3 页的 PDF 文件,每页对应一张原图,保持原始分辨率典型场景:多图合并为一份 PDF 文档
上传 1 张 PNG 图片(透明背景,尺寸 800×600)生成一个单页 PDF 文件,透明背景自动转为白色边界 case:单张图片也支持,透明背景会被填充
上传 10 张图片(包含 JPG、PNG、WEBP 格式,总大小 50MB)生成一个包含 10 页的 PDF 文件,混合格式自动统一处理典型场景:不同格式图片混合上传
上传 1 张图片(文件名含中文和空格,如「我的照片 2024.jpg」)生成 PDF 文件,文件名保持原样,无乱码易错 case:中文文件名不会导致编码错误
上传 0 张图片(直接点击「开始转换」)提示「请至少选择一张图片」边界 case:空输入会触发校验提示
上传 1 张超大图片(分辨率 10000×10000,单文件 100MB)生成 PDF 文件,但处理时间较长(约 10-30 秒),PDF 体积可能超过 50MB边界 case:超大图片会显著影响处理速度
上传 5 张图片(其中 1 张为损坏的 .jpg 文件)生成一个包含 4 页的 PDF,跳过损坏图片并提示「第 3 张图片无法读取」易错 case:损坏文件会被自动跳过并给出提示

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

1. 上传了非图片文件(如 PDF 或 Word)

错误
直接拖入一个 .pdf 或 .docx 文件
修复
只上传 .jpg / .png / .webp / .bmp / .gif 等图片格式

工具后端用 Go 处理图片,非图片文件无法解码为像素数据,会直接返回格式错误或空结果

2. 单张图片尺寸超过 50MB

错误
上传一张 120MB 的 4K 照片
修复
先用图片压缩工具将单张图片控制在 50MB 以内

服务端内存有限,超大图片会触发 OOM 或请求超时(默认 30s),建议单张不超过 50MB

3. 图片文件名包含特殊字符(如 # ? &)

错误
文件名为「风景#1.jpg」或「test?file.png」
修复
重命名为纯英文或数字,如「scenery1.jpg」「testfile.png」

URL 中 # 被当作锚点,? 被当作查询参数,服务端解析文件名时会丢失或截断

4. 上传了透明 PNG 但期望纯白背景

错误
透明 PNG 直接转 PDF,背景变成黑色或棋盘格
修复
先对透明 PNG 做「填充白色背景」处理,再上传

PDF 不支持透明通道,Go 图片解码后透明像素会被渲染为黑色(默认背景色),非预期效果

5. 图片方向错误(横图竖拍)但期望自动旋转

错误
手机拍摄的竖屏照片(EXIF 方向标记为 6)直接上传
修复
上传前用图片编辑软件旋转为正确方向,或确认工具是否支持 EXIF 方向读取

当前工具未实现 EXIF 方向解析,图片按原始像素数据排列,横竖方向不会被自动修正

6. 一次性上传超过 100 张图片

错误
一次选择 200 张图片点击上传
修复
分批上传,每次不超过 100 张

服务端并发处理上限为 100 个文件,超量会触发请求体过大(413)或部分文件被丢弃

7. 期望 PDF 保留图片的原始色彩空间(如 CMYK)

错误
上传 CMYK 模式的 TIFF 图片,期望 PDF 中颜色不变
修复
先将图片转为 sRGB 模式再上传

Go 标准库 image 包不支持 CMYK 解码,会转为 RGB,导致颜色偏移或饱和度变化

8. 上传了 WebP 动图但只取第一帧

错误
上传一个 10 帧的 WebP 动图,期望生成多页 PDF
修复
先提取每一帧为独立静态图片,再批量上传

工具按文件数量生成 PDF 页数,动图只解码第一帧,后续帧不会被处理

工作原理

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

核心公式

PDF = merge(IMG₁, IMG₂, ..., IMGₙ, options)

变量说明

  • IMG₁..IMGₙ — 输入的图片文件列表,n ≥ 1
  • options — 页面尺寸、边距、排序等参数
  • PDF — 输出的多页 PDF 文件

示例

用户上传 3 张图片:IMG₁=封面.png (1920×1080),IMG₂=正文1.jpg (2480×3508),IMG₃=正文2.jpg (2480×3508)。options 设为 A4 纵向、无边距、按文件名排序。工具将每张图片逐页嵌入 PDF,输出一个 3 页的 PDF 文件,第 1 页为封面,第 2-3 页为正文。

适用范围

适用于任意常见图片格式(JPEG/PNG/WebP/BMP/GIF)合并为 PDF。不支持加密图片、损坏图片或超大分辨率(单边>10000px)图片,此类图片可能导致转换失败或页面异常。

原理图

1. 上传图片选择多张图片支持 JPG/PNG/WebP2. 后端处理Go 服务端接收图片合成 PDF3. 下载结果生成 PDF 文件一键下载到本地隐私说明• 图片上传至后端服务器处理,处理完成后服务器自动删除原始图片和生成的 PDF• 支持批量上传,单次最多 50 张图片,每张不超过 20MB
用户输入 后端处理 输出结果

开发者集成

3 种主流语言 · 复制即用

from PIL import Image
import sys

# 将多张图片合并为一个 PDF
images = []
for path in ["page1.jpg", "page2.png", "page3.webp"]:
    try:
        img = Image.open(path).convert("RGB")  # PDF 需要 RGB 模式
        images.append(img)
    except FileNotFoundError:
        print(f"文件未找到: {path}", file=sys.stderr)
        sys.exit(1)

if images:
    # 第一张图作为 PDF 基础,其余追加
    images[0].save("output.pdf", save_all=True, append_images=images[1:])
    print("已生成 output.pdf")
else:
    print("没有有效的图片", file=sys.stderr)
package main

import (
	"image"
	"image/jpeg"
	"image/png"
	"os"
	"strings"

	"github.com/signintech/gopdf"
)

func main() {
	pdf := &gopdf.GoPdf{}
	pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4})

	files := []string{"img1.jpg", "img2.png"}
	for _, f := range files {
		img, err := loadImage(f)
		if err != nil {
			panic(err)
		}
		pdf.AddPage()
		pdf.Image(f, 0, 0, &gopdf.Rect{W: float64(img.Bounds().Dx()), H: float64(img.Bounds().Dy())})
	}
	pdf.WritePdf("output.pdf")
}

func loadImage(path string) (image.Image, error) {
	f, err := os.Open(path)
	if err != nil {
		return nil, err
	}
	defer f.Close()

	if strings.HasSuffix(path, ".png") {
		return png.Decode(f)
	}
	return jpeg.Decode(f)
}
const PDFDocument = require('pdfkit');
const fs = require('fs');
const sharp = require('sharp');

async function imagesToPdf(imagePaths, outputPath) {
  const doc = new PDFDocument({ autoFirstPage: false });
  const stream = fs.createWriteStream(outputPath);
  doc.pipe(stream);

  for (const path of imagePaths) {
    // 用 sharp 获取图片尺寸,避免 PDF 页面大小不匹配
    const metadata = await sharp(path).metadata();
    doc.addPage({ size: [metadata.width, metadata.height] });
    doc.image(path, 0, 0, { width: metadata.width, height: metadata.height });
  }

  doc.end();
  return new Promise((resolve, reject) => {
    stream.on('finish', resolve);
    stream.on('error', reject);
  });
}

// 使用示例
imagesToPdf(['photo1.jpg', 'photo2.png'], 'combined.pdf')
  .then(() => console.log('PDF 已生成'))
  .catch(console.error);

常见问题

9 个高频疑问

怎么把好几张图片合成一个 PDF?顺序能调吗?
本工具支持一次上传多张图片,上传后列表中会显示所有图片的缩略图,可以拖拽或点击上下箭头调整顺序。调整好顺序后点击「开始转换」即可合并成一个 PDF,每张图片占一页。如果上传后没看到排序操作区,检查一下浏览器窗口宽度是否过小(移动端可能折叠为列表模式),可以尝试横屏或使用电脑浏览器。
图片转 PDF 后图片变模糊了,是压缩了吗?
本工具默认使用原始图片分辨率生成 PDF,不做额外压缩。模糊的可能原因:① 原图本身分辨率不足,放大到 PDF 页面尺寸后像素被拉伸,这种情况建议上传更高像素的图片;② 浏览器预览 PDF 时默认降低了显示质量(部分 PDF 阅读器有「优化显示」选项),可以下载后用 Adobe Acrobat 或系统自带 PDF 阅读器打开对比;③ 如果原图是 JPEG 格式且本身压缩率高,图像细节已丢失,转 PDF 无法恢复。
上传 JPG 和 PNG 转出来的 PDF 大小差很多,为什么?
因为 PDF 内部存储图片的方式不同。JPG 本身是有损压缩格式,PDF 直接嵌入 JPG 数据,文件较小;PNG 是无损格式,尤其包含透明通道或大面积纯色区域时,PDF 会按无损方式存储,文件可能比 JPG 大 3-5 倍。如果对文件大小敏感,建议上传前将 PNG 转换为 JPG(质量 90% 以上基本无肉眼差异),或使用工具自带的「压缩图片」选项(如果有)。
最大能上传多大的图片?一次能传多少张?
单张图片最大 50MB,每次最多上传 100 张。如果图片总大小超过 500MB,传输和转换时间会明显增加,建议分批处理。注意:超长边(宽度或高度超过 10000 像素)的图片可能被自动缩放到 10000 像素以内,这是为了防止生成超大 PDF 导致浏览器崩溃。如果遇到上传后无响应,先检查单张图片是否超过 50MB 限制。
这个工具是纯本地的吗?图片会传到你的服务器吗?
是纯浏览器端处理。图片上传后不经过任何外部服务器,所有转换在本地浏览器中完成,关闭页面即从内存清除。可以断网后打开页面测试,工具仍然能正常使用。注意:如果使用「添加图片」按钮从本地选择文件,文件不会上传到云端;但如果拖拽图片到浏览器窗口,部分浏览器会将图片先加载到内存再传给页面,本质上仍是本地处理。
为什么我上传了图片但一直卡在「处理中」不动?
卡住通常有两个原因:① 图片太大或数量太多,浏览器计算量过大导致界面假死,可以打开任务管理器确认浏览器 CPU 占用是否接近 100%,等待 1-2 分钟看能否恢复;② 浏览器兼容性问题,已知某些旧版 Safari 和 Edge 在处理大图时存在内存泄漏,建议更新浏览器或改用 Chrome / Firefox。如果反复卡住,尝试减少图片数量(一次 10 张以内)或缩小图片尺寸后再上传。
PDF 页面大小可以设置吗?我想让图片铺满 A4 纸。
目前默认每张图片自适应一页,不单独提供页面尺寸设置。图片会按原图比例居中显示在 PDF 页面上,如果原图比例与 A4(210×297mm)不一致,页面两侧或上下会留白。要铺满 A4,需要提前用图片编辑软件将图片裁剪或调整比例为 A4 比例(1:1.414),再上传转换。如果未来需要此功能,可以反馈给开发者评估。
图片转 PDF 和 Word 转 PDF 有什么区别?哪个更清晰?
图片转 PDF 是把每张图片作为一页「截图」嵌入 PDF,本质是图像容器,文字不可选中、不可搜索,文件较大。Word 转 PDF 是保留文字、矢量图形和超链接,文字可复制搜索,文件较小。清晰度方面:图片转 PDF 的清晰度完全取决于原图分辨率,如果原图是 300DPI 以上扫描件,两者清晰度接近;但图片转 PDF 无法像 Word 转 PDF 那样自动处理字体渲染,矢量文字在缩放时更锐利。
转换出来的 PDF 能直接打印吗?打印出来清晰吗?
可以打印,清晰度取决于原图分辨率。打印建议:① 原图分辨率至少 200 DPI(A4 尺寸对应约 1650×2330 像素),否则打印出来会有锯齿;② 如果原图是手机拍摄的照片(通常 72-96 DPI),打印 A4 大小会模糊,建议上传前用图片编辑软件将分辨率调整为 300 DPI;③ 本工具生成的 PDF 是标准格式,兼容所有支持 PDF 打印的软件和打印机。
选择 打开 +新窗口 esc关闭