feat: auto-convert URL to QR code in PDF export and preview
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user