1023 B
1023 B
PDF URL→二维码功能设计
需求
导出 PDF 时,如果发现文本内容中有 URL,自动将 URL 转换为二维码,扫描可跳转。
规则
- 检测位置:任意位置(AI报告内容、标题等所有文本)
- 替代方式:二维码替代原 URL 文字
- 二维码大小:60x60pt(约2.5cm)
- 放置位置:URL 原文字位置
技术方案
新增依赖:
qrcodePython 包
修改文件:
app/services/pdf_generator.py
实现步骤:
- 安装 qrcode 包
- 在
generate_pdf()中,正则检测 URL(http://或https://开头) - 检测到 URL 时,生成二维码 PNG 图片
- 用 ReportLab 的
Imageflowable 嵌入 PDF,替代原 URL 文字
二维码生成方式:
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<>"{}|\\^[]]+`