# PDF Templates
This directory contains HTML templates for PDF generation using WeasyPrint.
## Structure
```
templates/
├── pdf/
│ ├── marketing_referrals.html # Marketing referrals report template
│ └── ... # Future templates
└── README.md # This file
```
## Template Guidelines
### 1. RTL Support
- All templates should support RTL (Right-to-Left) layout
- Use `dir="rtl"` in HTML tag
- Use `text-align: right` in CSS
### 2. Font Support
- Use 'Vazirmatn' font for Persian text
- Fallback to Arial, sans-serif
- Ensure proper font loading in CSS
### 3. Page Layout
- Use `@page` CSS rule for page settings
- Set appropriate margins (2cm recommended)
- Include page numbers in header/footer
### 4. Styling
- Use CSS Grid or Flexbox for layouts
- Ensure print-friendly colors
- Use appropriate font sizes (12px base)
- Include proper spacing and padding
### 5. Data Binding
- Use Jinja2 template syntax
- Handle null/empty values gracefully
- Format dates and numbers appropriately
## Adding New Templates
1. Create HTML file in appropriate subdirectory
2. Follow naming convention: `{feature}_{type}.html`
3. Include proper CSS styling
4. Test with sample data
5. Update PDF service to use new template
## Example Usage
```python
from app.services.pdf_service import PDFService
pdf_service = PDFService()
pdf_bytes = pdf_service.generate_marketing_referrals_pdf(
db=db,
user_id=user_id,
query_info=query_info,
selected_indices=indices,
stats=stats
)
```
## Future Enhancements
- Template inheritance system
- Dynamic template selection
- Multi-language support
- Template preview functionality
- Template versioning