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