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.
 
 
 
 
 
 

1.4 KiB

05 — PDF 缩略图渲染

What to build: ThumbnailRenderer 的 PDF 实现,扩展缩略图覆盖范围到 PDF 文件。新建 PDF 渲染实现类,使用 PDFBox 的 PDFRenderer 渲染 PDF 第一页为 BufferedImage(DPI 150 兼顾清晰度与性能),再走和图片缩略图相同的缩放 + JPEG 输出路径。ThumbnailGenerationTask 的类型判断逻辑扩展:上传 PDF 时 thumbnail_statusPENDING 并提交异步任务,渲染器路由到 PDF 实现。完成后上传一个 PDF,等异步任务跑完,调缩略图 API 能拿到第一页缩略图。

Blocked by: 03 — 图片异步生成

Status: ready-for-agent

  • ThumbnailRenderer 的 PDF 实现:PDFBox PDDocument.load()PDFRenderer.renderImageWithDPI(0, 150) → BufferedImage
  • PDF 实现复用图片缩略图的缩放 + JPEG 输出逻辑(抽取为共用工具方法或基类)
  • ThumbnailRenderer.supports() 覆盖 PDF(contentType application/pdf 或扩展名 .pdf
  • ThumbnailGenerationTask 渲染器路由:根据文件类型选择对应的 ThumbnailRenderer 实现
  • 上传 PDF 时 thumbnail_status 置 PENDING + 提交异步任务(扩展 03 的类型判断)
  • 测试:upload PDF → thumbnail_status 为 PENDING + 提交异步任务
  • 测试:PDF 渲染成功 → 第一页缩略图写入 MinIO + 状态 READY
  • 测试:ThumbnailRenderer.supports 对 PDF 返回 true,对非图片非 PDF 返回 false