forked from 666ghj/BettaFish
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexport_pdf.py
More file actions
70 lines (57 loc) · 2.15 KB
/
export_pdf.py
File metadata and controls
70 lines (57 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env python
"""
PDF导出脚本
"""
import json
import os
import sys
from datetime import datetime
from pathlib import Path
# 添加项目路径到sys.path
sys.path.insert(0, '/Users/mayiding/Desktop/GitMy/BettaFish')
def export_pdf(ir_file_path):
"""导出PDF"""
try:
# 读取IR文件
print(f"正在读取报告文件: {ir_file_path}")
with open(ir_file_path, 'r', encoding='utf-8') as f:
document_ir = json.load(f)
# 导入PDF渲染器
from ReportEngine.renderers.pdf_renderer import PDFRenderer
# 创建PDF渲染器
print("正在初始化PDF渲染器...")
renderer = PDFRenderer()
# 生成PDF
print("正在生成PDF...")
pdf_bytes = renderer.render_to_bytes(document_ir, optimize_layout=True)
# 确定输出文件名
topic = document_ir.get('metadata', {}).get('topic', 'report')
output_dir = Path('/Users/mayiding/Desktop/GitMy/BettaFish/final_reports/pdf')
output_dir.mkdir(parents=True, exist_ok=True)
pdf_filename = f"report_{topic}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf"
output_path = output_dir / pdf_filename
# 保存PDF文件
print(f"正在保存PDF到: {output_path}")
with open(output_path, 'wb') as f:
f.write(pdf_bytes)
print(f"✅ PDF导出成功!")
print(f"文件位置: {output_path}")
print(f"文件大小: {len(pdf_bytes) / 1024 / 1024:.2f} MB")
return str(output_path)
except Exception as e:
print(f"❌ PDF导出失败: {str(e)}")
import traceback
traceback.print_exc()
return None
if __name__ == "__main__":
# 使用最新的报告文件
latest_report = "/Users/mayiding/Desktop/GitMy/BettaFish/final_reports/ir/report_ir_人工智能行情发展走势_20251119_235407.json"
if os.path.exists(latest_report):
print("="*50)
print("开始导出PDF")
print("="*50)
result = export_pdf(latest_report)
if result:
print(f"\n📄 PDF文件已生成: {result}")
else:
print(f"❌ 报告文件不存在: {latest_report}")