TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #5195 2.74K
Эффективный рендеринг изображений Base64 в PDF-файлах Laravel с помощью DomPDF

При создании PDF с помощью библиотеки DomPDF в Laravel часто возникают сложности с обработкой изображений. Основная проблема — высокое потребление памяти, особенно если PDF содержит множество изображений. Вот решение, которое позволяет эффективно встраивать изображения в PDF, минимизируя нагрузку на память.

Проблема
DomPDF требует, чтобы изображения были встроены в HTML в виде base64-строк. Однако загрузка нескольких изображений в память одновременно может быстро превысить лимит, установленный для PHP. Это особенно критично при генерации больших документов, таких как каталоги или отчёты.

Решение
Предложенный подход включает:

🔸Обработку изображений небольшими частями (чтобы избежать переполнения памяти).
🔸Гибкую обработку отсутствующих изображений.
🔸Поддержку как локальных, так и удалённых файлов.
🔸Преобразование изображений в формат base64, совместимый с DomPDF.

Основные элементы решения
1. Управление памятью
Перед началом обработки устанавливается разумный лимит памяти, например, 256 МБ. Это позволяет избежать чрезмерного использования ресурсов сервера, оставаясь в рамках допустимых ограничений.

2. Постепенная загрузка изображений
Вместо того чтобы загружать весь файл в память сразу, изображение читается по частям, например, блоками по 8 КБ. Такой подход предотвращает резкий рост потребления памяти, что особенно полезно для работы с большими изображениями.

3. Обработка отсутствующих изображений
Если файл изображения не найден, вместо ошибки возвращается base64-код прозрачного 1x1 пикселя. Это позволяет избежать сбоев в процессе генерации PDF.
  • ❤ 1
  • 👍 1
More from @phpproglib
  1. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  2. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  3. Sep 30, 2026🐸 Библиотека пхпшника
  4. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  5. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  6. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →