002:一键把多张图片合成一个PDF

不用装软件!浏览器一键把多张图片合成一个PDF,普通人也能直接用

一、为什么我推荐这个图片转PDF小工具?

平时大家经常有这些需求:

扫描身份证、毕业证要合并成一份PDF发给公司;

网课截图、笔记图片整理成文档方便打印;

合同截图、证件照片打包归档,不想一张一张发;

网上那些在线转换网站坑特别多:

  1. 上传图片到别人服务器,身份证、隐私照片有泄露风险;
  2. 免费版只能转几张,多了就要开会员;
  3. 转换完有水印,PDF还会把图片压得模糊看不清;
  4. 要下载安装APP、电脑软件,占内存还一堆广告。

今天给大家分享一个完全免费、无广告、不用联网上传文件、不用安装任何软件的方法,完全不用懂编程,复制粘贴几步就能用 ,电脑上任意浏览器打开就能操作,所有图片只存在你自己电脑里,安全又省心。

二、这个工具能干什么?

  1. 一次性选中几十张图片,全部合并到同一个PDF文件里,一张图片占一页;
  2. 图片自动适配A4打印纸,自动居中,不用手动调大小;
  3. JPG、PNG、截图全部支持;
  4. 全程本地处理,图片不会外传,证件、私密照片放心用;
  5. 免费无水印,导出的PDF干净整洁;
  6. Windows、Mac电脑都能用,Chrome、Edge、360浏览器全都兼容。

三、超简单使用教程(全程30秒搞定,小白照着做就行)

第一步:新建一个文本文档

在电脑桌面空白处右键 → 新建 → 文本文档,建好后打开空白文档。

第二步:复制全部文字粘贴进去

文末有一整段完整内容,全部复制,粘贴到刚建好的空白文档里。

第三步:改一下文件后缀名

  1. 保存文档,关掉记事本;
  2. 右键这个文件,选择「重命名」;
  3. 把后面的 .txt 删掉,改成 .html
    举个例子:原来叫 新建文本文档.txt → 改成 图片转PDF.html>

看不到txt后缀?文件夹顶部点「查看」,勾选「文件扩展名」就能修改。

第四步:双击打开文件,开始转换

  1. 双击改好名字的文件,会自动用浏览器打开工具页面;
  2. 点击页面里的选择框,批量选中你要合并的所有图片;
  3. 选中后页面会显示所有图片预览,能看清顺序,选错了可以重新选;
  4. 点击蓝色按钮「生成并下载PDF」,等待几秒;
  5. 浏览器自动下载好合并完成的PDF,直接打开、打印、发送都可以。

四、大家最关心的几个问题(小白答疑)

1. 需要联网吗?会上传我的照片吗?

第一次打开需要一点点网络加载基础工具,图片全程保存在你电脑本地,不会上传到任何网站服务器,身份证、证件照完全不用担心泄露。

2. 一次最多能放多少张图片?

普通几十张截图、证件照完全没问题;如果是几十MB的高清大图,建议分两次转换,避免浏览器卡顿。

3. 导出的PDF可以打印吗?

完全可以,工具默认A4纸张,图片自动适配页面,打印不会变形、不会裁切。

4. 手机能不能用?

这套工具只适合电脑使用,手机浏览器打开会有功能限制,建议电脑操作。

5. 之后再用还要重新复制文字吗?

不用!改好后缀的文件保存在桌面,下次直接双击打开就能用,永久有效,不用重复操作。

五、简单小修改(想调整样式直接改文件名里的文字即可,不用懂代码)

  1. 想要PDF横向排版(适合宽截图):重新打开文件,找到portrait改成landscape保存,再打开使用;
  2. 想要固定导出文件名:找到带时间戳的那段文字,直接替换成你想要的名字,比如"证件合集.pdf";
  3. 想要更小的纸张(A5):找到a4改成a5保存即可。

六、完整工具文本(直接全选复制)

复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>多张图片转PDF合并成册</title>
  <style>
    * {
      box-sizing: border-box;
      font-family: system-ui, sans-serif;
    }
    body {
      max-width: 900px;
      margin: 30px auto;
      padding: 0 20px;
    }
    .preview {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
      margin: 20px 0;
    }
    .preview img {
      width: 120px;
      height: auto;
      border: 1px solid #ddd;
      border-radius: 6px;
      object-fit: cover;
    }
    button {
      padding: 10px 20px;
      font-size: 16px;
      cursor: pointer;
      background: #409eff;
      color: white;
      border: none;
      border-radius: 6px;
    }
    button:disabled {
      background: #ccc;
      cursor: not-allowed;
    }
  </style>
</head>
<body>
  <h2>📷 多张图片合并为一个 PDF</h2>
  <input type="file" id="imgInput" accept="image/*" multiple>
  <div class="preview" id="preview"></div>
  <button id="createPdfBtn" disabled>生成并下载 PDF</button>

  <script src="https://cdn.jsdelivr.net/npm/jspdf@2.5.1/dist/jspdf.umd.min.js"></script>
  <script>
    const { jsPDF } = window.jspdf;
    const imgInput = document.getElementById('imgInput');
    const preview = document.getElementById('preview');
    const createPdfBtn = document.getElementById('createPdfBtn');

    let imgFiles = [];

    // 选择图片并预览
    imgInput.addEventListener('change', (e) => {
      const files = Array.from(e.target.files);
      if (files.length === 0) return;

      preview.innerHTML = '';
      imgFiles = [];

      files.forEach((file, index) => {
        const reader = new FileReader();
        reader.onload = (ev) => {
          const img = new Image();
          img.src = ev.target.result;
          preview.appendChild(img);
          imgFiles.push({ src: ev.target.result, file });
        };
        reader.readAsDataURL(file);
      });

      createPdfBtn.disabled = false;
    });

    // 生成 PDF
    createPdfBtn.addEventListener('click', async () => {
      if (imgFiles.length === 0) return;

      const pdf = new jsPDF({
        orientation: 'portrait', // 竖向 portrait / 横向 landscape
        unit: 'mm',
        format: 'a4'
      });

      const a4Width = 210;
      const a4Height = 297;

      for (let i = 0; i < imgFiles.length; i++) {
        const imgData = imgFiles[i].src;
        const img = new Image();
        img.src = imgData;

        await new Promise(resolve => {
          img.onload = () => {
            const w = img.width;
            const h = img.height;
            let scale = 1;

            if (w > h) {
              // 宽图
              scale = a4Width / w;
            } else {
              // 高图
              scale = a4Height / h;
            }

            const imgW = w * scale;
            const imgH = h * scale;
            const x = (a4Width - imgW) / 2;
            const y = (a4Height - imgH) / 2;

            if (i > 0) pdf.addPage();
            pdf.addImage(imgData, 'JPEG', x, y, imgW, imgH);
            resolve();
          };
        });
      }

      pdf.save(`图片合并成册_${new Date().getTime()}.pdf`);
    });
  </script>
</body>
</html>

七、总结

对比各类转换软件、在线网站,这个本地小文件优势拉满:不用安装、无广告、无水印、隐私安全、永久免费,不管是学生整理笔记,还是上班族处理证件扫描件都非常合适。

操作全程只需要复制粘贴、改个文件名,完全不用懂任何代码,电脑小白也能一次成功。

相关推荐
CoderIsArt2 小时前
切片辅助超推理(SAHI):一种用于小目标检测的通用框架
人工智能·目标检测·计算机视觉
光之后裔9 小时前
基于SAM2的Label Studio自动标注环境搭建
机器学习·计算机视觉
m沐沐10 小时前
【机器学习】基于 dlib 面部关键点的多表情分类
人工智能·python·深度学习·机器学习·计算机视觉·人脸识别·表情识别
日日行不惧千万里11 小时前
Java AI 完整学习笔记
pdf
听风吹等浪起1 天前
002:多图合并导出PDF【网页版】
计算机视觉·pdf
Microvision维视智造1 天前
火腿肠里有没有异物?穿刺针尖有没有毛刺?——视觉检测守护“舌尖上的安全“
人工智能·计算机视觉·视觉检测
我是小杰啊1 天前
幻视是什么?一款用自然语言搜索图片与视频的 AI 视觉问答工具
人工智能·计算机视觉·多模态·ai应用·视频搜索
皓悦编程记1 天前
【免费数据集009期】Urban Issues Dataset:10类城市公共场景异常目标检测数据集
人工智能·计算机视觉·目标跟踪
蝶恋舞者1 天前
NMC-G2网络管理卡 资料官网下载流程
pdf