侧边栏壁纸
  • 累计撰写 66 篇文章
  • 累计创建 80 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Unraid 使用 Docker 将扫描版 PDF 转成图片教程

Seger
2026-07-02 / 0 评论 / 0 点赞 / 1 阅读 / 1,543 字

Unraid 使用 Docker 将扫描版 PDF 转成图片教程

本文记录一种在 Unraid 环境下,将扫描版 PDF 书籍按页转换成 JPG 图片的方法。该方法不需要在 Unraid 本机安装 pdftoppm,而是通过 Docker 临时容器完成转换,适合扫描书籍、资料归档、图片化保存等场景。


一、准备目录

以《明朝那些事》为例,假设 PDF 文件放在以下目录:

/mnt/user/book/明朝那些事/

PDF 文件名为:

明朝那些事.pdf

先进入该目录:

cd "/mnt/user/book/明朝那些事"

查看当前目录文件:

ls -lh

确认目录中存在:

明朝那些事.pdf

二、使用 Docker 转换 PDF 为图片

执行下面命令:

docker run --rm \
  -v "$PWD":/work \
  -w /work \
  debian:bookworm-slim \
  bash -lc 'apt-get update && apt-get install -y poppler-utils && \
  mkdir -p "output_images/明朝那些事" && \
  pdftoppm -r 300 -jpeg -jpegopt quality=95 \
  "明朝那些事.pdf" \
  "output_images/明朝那些事/page" && \
  echo "明朝那些事完成,生成图片数量:" && \
  find "output_images/明朝那些事" -type f -name "*.jpg" | wc -l'

转换完成后,图片会生成在:

/mnt/user/book/明朝那些事/output_images/明朝那些事/

生成的图片文件类似:

page-1.jpg
page-2.jpg
page-3.jpg
page-4.jpg

三、命令说明

1. 挂载当前目录

-v "$PWD":/work

这里的 $PWD 表示当前所在目录。

例如当前目录是:

/mnt/user/book/明朝那些事

那么 Docker 容器中的 /work 就对应 Unraid 上的:

/mnt/user/book/明朝那些事

2. 设置容器工作目录

-w /work

表示 Docker 容器进入 /work 目录执行后续命令。


3. 安装 PDF 转图片工具

apt-get update && apt-get install -y poppler-utils

poppler-utils 中包含 pdftoppm 工具,可以将 PDF 转换为图片。


4. 创建输出目录

mkdir -p "output_images/明朝那些事"

表示创建图片输出目录。


5. 转换 PDF 为 JPG 图片

pdftoppm -r 300 -jpeg -jpegopt quality=95 \
  "明朝那些事.pdf" \
  "output_images/明朝那些事/page"

参数说明:

-r 300

表示以 300DPI 导出,清晰度较高。

-jpeg

表示输出 JPG 格式。

-jpegopt quality=95

表示 JPG 图片质量为 95。


四、检查图片数量

转换完成后,可以执行:

find "output_images/明朝那些事" -type f -name "*.jpg" | wc -l

查看一共生成了多少张图片。

也可以查看前几张图片文件:

ls -lh "output_images/明朝那些事" | head

五、如果 PDF 文件名不同

如果你的 PDF 文件名不是:

明朝那些事.pdf

比如实际文件名是:

明朝那些事儿全集.pdf

那么只需要把命令中的:

"明朝那些事.pdf"

改成:

"明朝那些事儿全集.pdf"

即可。


六、如果想降低图片体积

默认命令使用:

-r 300
-jpegopt quality=95

图片比较清晰,但文件体积也会比较大。

如果只是网页阅读或普通归档,可以改成:

-r 200
-jpegopt quality=90

例如:

pdftoppm -r 200 -jpeg -jpegopt quality=90 \
  "明朝那些事.pdf" \
  "output_images/明朝那些事/page"

这样生成的图片会更小,加载速度更快。


七、完整命令模板

以后处理其他 PDF,只需要修改目录名、PDF 文件名和输出目录名即可。

模板如下:

cd "/mnt/user/book/书籍名称"

docker run --rm \
  -v "$PWD":/work \
  -w /work \
  debian:bookworm-slim \
  bash -lc 'apt-get update && apt-get install -y poppler-utils && \
  mkdir -p "output_images/书籍名称" && \
  pdftoppm -r 300 -jpeg -jpegopt quality=95 \
  "书籍名称.pdf" \
  "output_images/书籍名称/page" && \
  echo "转换完成,生成图片数量:" && \
  find "output_images/书籍名称" -type f -name "*.jpg" | wc -l'

八、以《明朝那些事》为例的完整流程

cd "/mnt/user/book/明朝那些事"

docker run --rm \
  -v "$PWD":/work \
  -w /work \
  debian:bookworm-slim \
  bash -lc 'apt-get update && apt-get install -y poppler-utils && \
  mkdir -p "output_images/明朝那些事" && \
  pdftoppm -r 300 -jpeg -jpegopt quality=95 \
  "明朝那些事.pdf" \
  "output_images/明朝那些事/page" && \
  echo "明朝那些事完成,生成图片数量:" && \
  find "output_images/明朝那些事" -type f -name "*.jpg" | wc -l'

生成目录:

/mnt/user/book/明朝那些事/output_images/明朝那些事/

九、注意事项

  1. 路径中如果有空格,一定要加英文双引号。
  2. PDF 文件名必须和命令中填写的一致。
  3. 如果图片很多,说明 PDF 页数较多,属于正常情况。
  4. 300DPI 适合高清保存,200DPI 更适合网页浏览。
  5. 该方法使用 Docker 临时容器,执行完成后容器会自动删除,不会长期占用系统资源。

十、常见问题

1. 提示 pdftoppm: command not found 怎么办?

这是因为 Unraid 本机没有安装 pdftoppm。使用本文的 Docker 命令即可,不需要在 Unraid 本机安装软件。


2. 图片生成在哪里?

图片生成在当前书籍目录下的:

output_images/书籍名称/

例如:

/mnt/user/book/明朝那些事/output_images/明朝那些事/

3. 怎么确认当前路径?

执行:

pwd

即可查看当前所在目录。


4. 为什么命令中没有写完整路径?

因为命令使用了:

-v "$PWD":/work

$PWD 就是当前目录。只要先 cd 到书籍目录,Docker 就会自动在这个目录下处理 PDF。


5. 能不能批量处理多本书?

可以。每本书单独建一个目录,然后进入对应目录执行命令即可。这样图片不会混在一起,后期管理也更清晰。

0

评论区