# 图片转 PDF JPG 转 PDF

把你的图片装进一个文档。

> 把 JPG、PNG、WebP 或 AVIF 合成一个 PDF，免费，全程在你的浏览器里跑。JPEG 照片进去不重新编码，什么都不上传。

这是一个浏览器交互工具，地址是 https://abox.tools/zh/images-to-pdf/。文件在运行该浏览器的设备上处理。主动分享和可选联网功能都在页面上说明。下文是它的文字说明；使用工具请打开该地址。

## 你的图片**在浏览器里处理**，无须上传处理。

文档在这台机器的内存里一页一页写出来，跑的是从这个地址发出的代码。这里没有任何东西能发起上传，这个页面的另一头也没有服务器能接住上传。

- ✗ 不上传
- ✗ 不注册
- ✓ 断网能用
- ✓ 开源
- ✓ 文件留在你的设备上

## 图片怎么变成 PDF

1. **选好你的图片。** 把整个文件夹拖到下面的方框里，或者一个个自己挑。浏览器直接从你的硬盘上读，这期间没有东西发出去。
2. **排好页序，该转的转过来。** 一张图一页，顺序就是你看到的顺序。抓住卡片上的手柄拖动，或者按上面的箭头。旋转按钮一次转九十度，横着扫进来的那种一般就得这么办。
3. **选页面大小。** “页面跟着每张图走”会让每一页正好等于那张图，不裁边，也没有白框。选 A4、Letter、Legal 这些固定尺寸，则是把每张图摆到一张固定大小的纸上，要留边就留边。
4. **生成 PDF，然后下载。** 文档在你自己的机器上写出来，所以快慢取决于你这台机器，不取决于排队。成品直接交给浏览器的下载。

## 说得更细的版本

[怎么把多张图片合成一个 PDF](https://abox.tools/zh/guides/combine-images-into-a-pdf/): 把照片或者扫描件做成一个 PDF：页面大小、顺序和旋转，JPEG 为什么进去时可以一点不掉画质，以及这份 PDF 会向收件人交代些什么。

## 工具箱里还有

- [文档扫描](https://abox.tools/zh/document-scanner/): 把纸拍下来，回来的是一份看着像扫描的东西。
- [从视频里提取音频](https://abox.tools/zh/extract-audio-from-video/): 把视频拖进来，声音就取出来了。画面从不解码，也不上传任何东西。
- [音频剪辑](https://abox.tools/zh/trim-audio/): 边听边标出值得留的段落。它们会合成一个文件回来，就切在你说的位置。
- [音频编辑](https://abox.tools/zh/edit-audio/): 倒着放、快慢随你调、把录轻了的声音提上来，全在你这台机器上。

## 常见问题

### 我的图片会传到什么地方去吗？

不会。读图和写 PDF，全由你自己的浏览器在你自己的硬件上完成。这个工具没有服务器那一半，页面的 `Content-Security-Policy` 把它可能联的地址全列了出来，没有一个是本站的。跟这里另外几个工具不同，它连可选的联网功能都没有。

### 转成 PDF 会掉画质吗？

默认设置下，JPEG 不会。PDF 本来就能直接装 JPEG 数据，所以照片是逐字节抄进文档的，不解码，也不再压一遍，PDF 里那张图就是文件里那张图。别的格式得重新编码，因为 PDF 里没有对应的滤镜可用，除非你选无损那一档，它照原样存下来，代价是文件更大。

### 支持哪些图片格式？

你的浏览器能解码的静态图都行，实际上就是 JPG、PNG、WebP、GIF、AVIF，苹果设备上还包括 HEIC。这里没有另一份需要不断维护的清单，因为解码是浏览器的活，不是我们的。

### 页面大小和页序能自己定吗？

能。页面可以是 A4、Letter、Legal、A3、A5、Tabloid，也可以自己填一个尺寸，或者干脆等于每张图本身。卡片拖着换顺序，按名字或日期排序，任意一张转九十度，页边距按毫米填。

### 一个 PDF 最多能放多少张图？

工具里没设上限。真正的天花板是你这台机器的内存，因为成品文档要在那儿拼好你才能下载。最先撑不住的，是几百张全分辨率的手机照片。设置里把最长边缩一缩，这道天花板一下能抬高很多。

### PDF 里会带上我的文件名或者时间戳吗？

你不要求就不会。文档信息那一块除了这个工具的名字之外是空的：没有文件名，没有机器名，没有用户名，你不勾那个框，连创建日期都没有。这是故意的，PDF 本来就是拿去给别人看的东西。

### 免费吗？要注册吗？

免费，没有账号，不用登录，也没有试用期。本站带广告，经费就是这么来的，广告拿不到关于你图片的任何信息。

### 断网能用吗？

能。页面开一次之后断网，它照干不误。这也是证明“什么都没上传”最省事的办法。一个把图片送出去做文档的工具，拔线那一刻就停了。

## 这条隐私承诺怎么核实

- **处理在这个浏览器里完成。** 本工具在浏览器里处理输入和结果，处理代码不把它们上传去处理。Content-Security-Policy 限制可用资源和连接目的地，但已允许的主机仍可接收请求。策略不检查载荷，不能单独证明什么都没有发出。请把具体操作的请求与源码核对，或断网完成该本地操作。
- **PDF 是在这儿写出来的。** 一个 PDF 说白了就是一串对象，外加一张记着每个对象从哪儿开始的表，两样都由 `src/shared/pdf-page-writer.js` 写。没有库要去外面取，没有哪一步在服务器上渲染，成品直接从内存交给下载。
- **这个文档对你一无所知。** PDF 会将本工具记为生成工具。只有输入标题和作者时，才会记录这些内容；只有勾选复选框时，才会记录创建日期。图片文件名和有关你设备的信息不会写入。
- **Google 加载了什么，又拿不到什么。** 广告脚本和统计脚本来自 Google。关于你图片的信息，一条都没给它们，文件不给，缩略图不给，文件名、大小、数量也不给。读图、解码、写图的每一行代码都从本站发出，也都摆在仓库里。
- **捐助按钮加载了什么，又拿不到什么。** 页头那个“Buy me a coffee”按钮，由 cdnjs.buymeacoffee.com 的脚本画出来，字体取自 Google Fonts。它就是个链接，仅此而已，不上报访问，也拿不到关于你或者你图片的任何东西。你不点它，什么都不会发生；点了，跳过去的是别人的网站。
- **断网照样能用。** 断开网络，这个页面上的一切照常工作。这是最省事的一条证明。一个把图片送出去做文档的工具，这时候就该停了。

**你可以自己核对。**上面这些不用你信。这个页面是仓库里的模板和配置生成出来的，构建脚本你能读，也能自己跑一遍，跑出来的结果就提交在 `dist` 分支上。拿实际发给你的内容，跟你自己从源码构建出来的结果对一遍就知道了： https://github.com/A-Box-of-Tools/website

最值得先读的几个文件：`config/site.toml` 里是 Content-Security-Policy，写文件的全部过程在 `src/shared/pdf-page-writer.js` 和 `src/document.js` 里，它们碰都不碰网络。
