trading-tools / utils /export /pdf_generator.py
Deploy Bot
Deploy Trading Analysis Platform to HuggingFace Spaces
a1bf219
"""PDF generation utilities for analysis reports."""
import logging
from typing import Optional
logger = logging.getLogger(__name__)
def generate_pdf_from_html(html_content: str, output_path: Optional[str] = None) -> str:
"""Generate PDF from HTML content.
Args:
html_content: HTML content to convert
output_path: Optional output path for PDF file. If None, uses temp file.
Returns:
Path to generated PDF file
Raises:
ImportError: If weasyprint is not installed
Exception: If PDF generation fails
"""
try:
from weasyprint import HTML
except ImportError:
logger.error("weasyprint not installed. Install with: pip install weasyprint")
raise ImportError(
"PDF export requires weasyprint. Install with: pip install weasyprint"
)
try:
# Generate PDF
if output_path is None:
import tempfile
fd, output_path = tempfile.mkstemp(suffix=".pdf")
import os
os.close(fd)
logger.info(f"Generating PDF at {output_path}")
# Convert HTML to PDF
HTML(string=html_content).write_pdf(output_path)
logger.info(f"PDF generated successfully: {output_path}")
return output_path
except Exception as e:
logger.error(f"PDF generation failed: {str(e)}")
raise
def generate_pdf_from_report(report, output_path: Optional[str] = None) -> str:
"""Generate PDF from AnalysisReport object.
Args:
report: AnalysisReport object
output_path: Optional output path for PDF file
Returns:
Path to generated PDF file
"""
html_content = report.to_html()
return generate_pdf_from_html(html_content, output_path)