Создание pdf с деталями заказа в письме клиенту. Opencart
Сделано в OPENCART 2.3.
Скачать библиотеку, зайти в папку с ней через консоль команд и выполнить команды
git clone https://github.com/dompdf/dompdf.git
cd dompdf
git clone https://github.com/PhenX/php-font-lib.git lib/php-font-lib
cd lib/php-font-lib
git checkout 0.5.1
cd ..
git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib
cd php-svg-lib
git checkout v0.3
почитать как устанавливать и пользоваться — по ссылке https://github.com/dompdf/dompdf/ Вот видео по использованию данной библиотеки https://www.youtube.com/watch?v=Pi8spdDdx-g&t=849s
- перенести папку с библиотекой dompdf в папку
/catalog/model/checkout/ (есть способы центрального подключения через движок opencart, но мой способ быстрее и целесообразнее использовать для штучного применения) - Подключить библиотеку для работы c pdf в скрипте /catalog/model/checkout/order.php. Пишем в начале файла перед объявлением класса
require_once DIR_APPLICATION.'model/checkout/dompdf/lib/html5lib/Parser.php';
require_once DIR_APPLICATION.'model/checkout/dompdf/lib/php-font-lib/src/FontLib/Autoloader.php';
require_once DIR_APPLICATION.'model/checkout/dompdf/lib/php-svg-lib/src/autoload.php';
require_once DIR_APPLICATION.'model/checkout/dompdf/src/Autoloader.php';
DompdfAutoloader::register();
use DompdfDompdf;
3. Прописать в коде этого файла (перед первой строчкой $mail->send()) функции инициализации,создание и наполнения pdf файла
$dompdf = new Dompdf();
$bodyhtml = $this->load->view('mail/order', $data);
$html = <<<EOF
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Заказ</title>
</head>
<body>
<style type="text/css">
body {font-family: DejaVu Sans, sans-serif;}
</style>
$bodyhtml
</body>
</html>
EOF;
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
$file_pdf = DIR_DOWNLOAD .'order_' .$order_id .'.pdf';
file_put_contents($file_pdf, $output);
4. Прикрепить к письму созданный pdf. Пишем сразу же после функции file_put_contents($file_pdf, $output);
$mail->addAttachment($file_pdf);
Таким образом клиент получит письмо с вложенным pdf файлом, в который будет продублировано содержимое письма о заказе.