You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
17 lines
1.4 KiB
17 lines
1.4 KiB
|
1 month ago
|
# 05 — PDF 缩略图渲染
|
||
|
|
|
||
|
|
**What to build:** `ThumbnailRenderer` 的 PDF 实现,扩展缩略图覆盖范围到 PDF 文件。新建 PDF 渲染实现类,使用 PDFBox 的 `PDFRenderer` 渲染 PDF 第一页为 `BufferedImage`(DPI 150 兼顾清晰度与性能),再走和图片缩略图相同的缩放 + JPEG 输出路径。`ThumbnailGenerationTask` 的类型判断逻辑扩展:上传 PDF 时 `thumbnail_status` 置 `PENDING` 并提交异步任务,渲染器路由到 PDF 实现。完成后上传一个 PDF,等异步任务跑完,调缩略图 API 能拿到第一页缩略图。
|
||
|
|
|
||
|
|
**Blocked by:** 03 — 图片异步生成
|
||
|
|
|
||
|
|
**Status:** ready-for-agent
|
||
|
|
|
||
|
|
- [x] `ThumbnailRenderer` 的 PDF 实现:PDFBox `PDDocument.load()` → `PDFRenderer.renderImageWithDPI(0, 150)` → BufferedImage
|
||
|
|
- [x] PDF 实现复用图片缩略图的缩放 + JPEG 输出逻辑(抽取为共用工具方法或基类)
|
||
|
|
- [x] `ThumbnailRenderer.supports()` 覆盖 PDF(contentType `application/pdf` 或扩展名 `.pdf`)
|
||
|
|
- [x] `ThumbnailGenerationTask` 渲染器路由:根据文件类型选择对应的 ThumbnailRenderer 实现
|
||
|
|
- [x] 上传 PDF 时 `thumbnail_status` 置 PENDING + 提交异步任务(扩展 03 的类型判断)
|
||
|
|
- [x] 测试:upload PDF → thumbnail_status 为 PENDING + 提交异步任务
|
||
|
|
- [x] 测试:PDF 渲染成功 → 第一页缩略图写入 MinIO + 状态 READY
|
||
|
|
- [x] 测试:ThumbnailRenderer.supports 对 PDF 返回 true,对非图片非 PDF 返回 false
|