Создание 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

  1. перенести папку с библиотекой dompdf в папку
    /catalog/model/checkout/ (есть способы центрального подключения через движок opencart, но мой способ быстрее и целесообразнее использовать для штучного применения)
  2. Подключить библиотеку для работы 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';
Dompdf\Autoloader::register();

use Dompdf\Dompdf;

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 файлом, в который будет продублировано содержимое письма о заказе.

2 thoughts on “Создание pdf с деталями заказа в письме клиенту. Opencart”

  1. за 4 пункт спасибо, но пункт 3 не работает. пришлось в другом файле рендерить pdf файл, и в order.php вставлять с путями. Все равно, огромно спасибо)

    1. Я выложил это решение после того, как реализовал на opencart 2/3. Клиенту приходят письма c pdf

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *