Book118 文档下载器:免费把网页预览转成 PDF
【免费下载链接】book118-downloader基于java的book118文档下载器项目地址: https://gitcode.com/gh_mirrors/bo/book118-downloader
Book118 上大部分文档处于「能预览、不能下载」的状态,想拿完整文件得付费;手动截图拼页又慢、画质还差。book118-downloader 这个 Book118 文档下载器把它做成了自动流程:模拟网站的预览机制把预览图逐页取下来,拼成 PDF 存到你本地,全程不需要注册和付费。
🔍 看懂 Book118 文档下载器:定位与三个核心特性
它是一个用 Java 写的命令行小工具,用法很直接:输入文档编号,它自动完成解析预览页、下载图片、拼装 PDF 的全流程。只能处理线上可预览的文档,产出的是与预览图同源的 PDF 文件。
- 不收费:只取网站本来就公开展示的预览内容
- 本地处理:图片和 PDF 都在你自己的电脑上生成,不经过任何上传
- 进度可读:控制台实时打印解析与下载进度,卡在哪一步一目了然
⚙️ 从安装到出第一份 PDF:Java 文档下载器怎么跑起来
第一步,确认 Java 环境。项目按 Java 8 编译,装好 Java 8 及以上的运行环境即可:
java -version第二步,拿到源码并构建。用 Maven(Java 生态里负责拉依赖、打包的构建工具)构建出可直接运行的 JAR:
git clone https://gitcode.com/gh_mirrors/bo/book118-downloader cd book118-downloader && mvn package第三步,启动并输入编号。构建完成后,可执行文件在target目录里,运行它会提示输入文档编号:
java -jar target/book118Downloader-V2020.jar输入编号后程序开始解析、下载,最终在out目录里生成以编号命名的 PDF。
怎么拿到文档编号
文档预览页 URL 里最后那串数字就是文档编号,比如https://max.book118.com/html/2017/0611/113657916.shtm中的113657916。打开文档页面,把地址栏里这串数字抄下来输入即可,不需要额外准备。
🔎 幕后:预览页是怎么一步步变成 PDF 的
页面解析与图片抓取:链接是怎么拿到的
核心逻辑集中在 DocumentBrowser.java。它先请求该编号的预览入口页,从页面里抠出project_id、aid、view_token这几个参数,拼出预览图片接口的地址;然后按每批 6 页的节奏请求这个接口,批与批之间休眠 1 秒(代码注释里写明不 sleep 会拿不到结果),把响应里的 JSON 解析成「页码 → 图片地址」的映射。响应中还会给出可预览的页数上限,超长文档超出上限的部分拿不到,这是网站侧的规则,不是工具的问题。
异步下载与本地拼 PDF
下载策略的演进可以从 README.md 的修订日志里看到:早期版本要等全部链接解析完才开始下载,长文档干等的时间很长,2018 年改为边解析边下载,拿到一批链接就先用上。下载阶段,图片以.gif格式按页码命名存进temp目录,控制台滚动打印「已下载页数:[n] 页」。全部就绪后,PdfGenerator.java 用 iText(Java 生态里常用的 PDF 生成库)按数字顺序逐张打开图片,把页面尺寸设成与图片一致,产出out/文档编号.pdf,最后删掉 temp 临时目录。项目依赖主要是 hutool(提供 HTTP 请求与文件操作的通用 Java 工具库)和 iText,完整清单见 pom.xml。
📊 和手动截图、在线转换比一比
如果你曾在 Book118 存过文档,大概率下面几种情形都遇到过;拿几个常用维度横向比一下:
| 维度 | 手动截图 | 在线转换工具 | book118-downloader |
|---|---|---|---|
| 百页文档耗时 | 小时级,逐页操作 | 中等,需上传 | 几分钟,自动跑完 |
| 文件质量 | 取决于截图手法 | 常被压缩 | 与预览图同源 |
| 隐私 | 无风险 | 文件内容要上传 | 全程本地,不上传 |
| 可重复性 | 难复现 | 看站点脸色 | 编号还在就能重跑 |
对比下来定位很明确:它不是哪一项都最快,但「不上传、可复现、脚本化」这三点,让它成为少数能稳定执行的方案。
🛠️ 进阶与避坑:批量下载、输出目录、权限确认
- 一次一个编号:BookDownloader.java 每次运行只读入一个文档编号,要处理多个文档就重复运行、逐个输入,别用逗号连号,那样会当成一个编号去请求。
- 大文档有耐心:解析阶段每批 6 页、批间间隔 1 秒,页数越多「解析中」的等待越长;进入下载后看控制台进度即可,中途断网会打错误日志,重跑一次就好。
- 输出位置固定:PDF 一律落在运行目录下的
out文件夹,以文档编号命名;temp 中间目录会自动清理,不用手动收拾。 - 跑之前先看预览权限:只有线上可预览的文档才支持;需要付费才能预览的文档和 PPT 不在支持范围内,README 里明确写了这一点。
说到底,这个 Book118 文档下载器解决的场景很具体:把你能预览的文档变成一份本地 PDF。用它时合理获取、尊重版权即可。
【免费下载链接】book118-downloader基于java的book118文档下载器项目地址: https://gitcode.com/gh_mirrors/bo/book118-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考