feat: auto-convert URL to QR code in PDF export and preview

This commit is contained in:
hmo
2026-04-29 16:22:42 +08:00
parent c9e818e1ac
commit 2a8d8a87d7
5 changed files with 83 additions and 4 deletions
+23
View File
@@ -832,6 +832,29 @@ def preview_report(plan_id):
# Markdown 转 HTML
html_content = markdown.markdown(rendered, extensions=['tables', 'fenced_code'])
# URL 转二维码图片(预览用)
import re
import qrcode
import base64
from io import BytesIO
def make_qr_base64(url):
qr = qrcode.make(url, box_size=5)
buf = BytesIO()
qr.save(buf, format='PNG')
return base64.b64encode(buf.getvalue()).decode()
def replace_url_with_qr(match):
url = match.group(0)
try:
qr_b64 = make_qr_base64(url)
return f'<br><img src="data:image/png;base64,{qr_b64}" alt="QR" style="width:80px;display:block;margin:8px auto;">'
except:
return url
url_pattern = re.compile(r'https?://[^\s<>"{}|\\^`\[\]]+')
html_content = url_pattern.sub(replace_url_with_qr, html_content)
# 支持 ReportLab <para alignment="center"> 语法,转为 HTML
import re
html_content = re.sub(