docs: add pdf qrcode feature design spec
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
# PDF URL→二维码功能设计
|
||||||
|
|
||||||
|
## 需求
|
||||||
|
|
||||||
|
导出 PDF 时,如果发现文本内容中有 URL,自动将 URL 转换为二维码,扫描可跳转。
|
||||||
|
|
||||||
|
## 规则
|
||||||
|
|
||||||
|
- **检测位置**:任意位置(AI报告内容、标题等所有文本)
|
||||||
|
- **替代方式**:二维码替代原 URL 文字
|
||||||
|
- **二维码大小**:60x60pt(约2.5cm)
|
||||||
|
- **放置位置**:URL 原文字位置
|
||||||
|
|
||||||
|
## 技术方案
|
||||||
|
|
||||||
|
**新增依赖:**
|
||||||
|
- `qrcode` Python 包
|
||||||
|
|
||||||
|
**修改文件:**
|
||||||
|
- `app/services/pdf_generator.py`
|
||||||
|
|
||||||
|
**实现步骤:**
|
||||||
|
1. 安装 qrcode 包
|
||||||
|
2. 在 `generate_pdf()` 中,正则检测 URL(`http://` 或 `https://` 开头)
|
||||||
|
3. 检测到 URL 时,生成二维码 PNG 图片
|
||||||
|
4. 用 ReportLab 的 `Image` flowable 嵌入 PDF,替代原 URL 文字
|
||||||
|
|
||||||
|
**二维码生成方式:**
|
||||||
|
```python
|
||||||
|
import qrcode
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
|
def generate_qr_image(url, size=60):
|
||||||
|
qr = qrcode.make(url)
|
||||||
|
buf = BytesIO()
|
||||||
|
qr.save(buf, format='PNG')
|
||||||
|
buf.seek(0)
|
||||||
|
return buf
|
||||||
|
```
|
||||||
|
|
||||||
|
**URL 正则:** `https?://[^\s<>"{}|\\^`\[\]]+`
|
||||||
Reference in New Issue
Block a user