69 lines
3.9 KiB
Markdown
69 lines
3.9 KiB
Markdown
# Улучшения диаграмм в PDF-отчетах
|
|
|
|
## Проблемы, которые были решены
|
|
|
|
1. **Обрезание диаграмм** - диаграммы выходили за границы страницы PDF
|
|
2. **Некрасивый внешний вид** - диаграммы выглядели неаккуратно и нечитаемо
|
|
3. **Плохое качество** - низкое разрешение и размытость
|
|
|
|
## Внесенные улучшения
|
|
|
|
### 1. Улучшенная логика масштабирования (`ResearchPdfService.java`)
|
|
|
|
- **Точный расчет доступного пространства** с учетом всех отступов
|
|
- **Пропорциональное масштабирование** для сохранения соотношения сторон
|
|
- **Ограничения масштабирования** (30%-100%) для читаемости
|
|
- **Дополнительная проверка** размера после масштабирования
|
|
- **Принудительное уменьшение** если диаграмма все еще не помещается
|
|
|
|
### 2. Оптимизация генерации SVG (`OpenAiChartService.java`)
|
|
|
|
- **Стандартные размеры** 800x600 для оптимального качества в PDF
|
|
- **Увеличенные отступы** (минимум 60px) вокруг диаграммы
|
|
- **Улучшенная стилизация** с градиентами, тенями и рамками
|
|
- **Контрастные цвета** и размер шрифта не менее 14px
|
|
- **Сетка и оси** для лучшей читаемости
|
|
|
|
### 3. Улучшенная конвертация SVG в PNG (`SvgToPngConverter.java`)
|
|
|
|
- **Высокое качество** конвертации для PDF
|
|
- **Автоматические размеры** если SVG не содержит явных размеров
|
|
- **Оптимизация** для печати и отображения
|
|
|
|
### 4. Адаптивное размещение диаграмм
|
|
|
|
- **Автоматическое разбиение** больших диаграмм на отдельные страницы
|
|
- **Подписи к диаграммам** при наличии нескольких диаграмм
|
|
- **Улучшенные отступы** для лучшего внешнего вида
|
|
- **Центрирование** всех диаграмм
|
|
|
|
### 5. Улучшения в ReportGenerationService
|
|
|
|
- **Улучшенное масштабирование** для диаграмм тональности
|
|
- **Пропорциональное изменение размера** с сохранением качества
|
|
- **Лучшее позиционирование** и отступы
|
|
|
|
## Результат
|
|
|
|
- ✅ Диаграммы больше не обрезаются
|
|
- ✅ Улучшенное качество и читаемость
|
|
- ✅ Профессиональный внешний вид
|
|
- ✅ Адаптивное размещение на страницах
|
|
- ✅ Оптимизация для PDF-формата
|
|
|
|
## Технические детали
|
|
|
|
### Ключевые методы:
|
|
|
|
- `addChartsSection()` - основная логика добавления диаграмм
|
|
- `shouldSplitChart()` - проверка необходимости разбиения на страницы
|
|
- `addChartWithPagination()` - добавление с разбиением
|
|
- `buildSvgPrompt()` - улучшенные промпты для генерации SVG
|
|
|
|
### Параметры масштабирования:
|
|
|
|
- Минимальный масштаб: 30%
|
|
- Максимальный масштаб: 100%
|
|
- Безопасный отступ: 90% от доступного пространства
|
|
- Стандартные размеры SVG: 800x600px
|