Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

часть кода страницы html запаковать в pdf для скачивания


Dimasscus

Recommended Posts

Всем привет. гугл не помог- все что нашел-касается того как силами php и js завернуть в pdf всю станицу. мне нужно немного иная штука- в письме о подарочном сертификате я отправляю сверстанный сертификат.

почему не картинкой? не придумал как на картинку наложить код ваучера и сумму.:))

так вот-есть ли возможность запаковать и сделать скачиваемым часть страницы? ( конкретно - нужный контейнер)

спасибо

 

Надіслати
Поділитися на інших сайтах


18 минут назад, slobGrower сказал:

mpdf для такой задачи отлично подойдет

если я правильно понял тут 

$ mpdf -> WriteHTML ( '<h1> Привет, мир! </h1>' );

я могу указать именно нужный мне контейнер, а не все содержимое .tpl верно?

Надіслати
Поділитися на інших сайтах


@Dimasscus совершенно верно. Накидываете туда строки, затем рендерите pdf

Почитайте доки, там интересная библиотека. Стили можно подтянуть, к примеру

Надіслати
Поділитися на інших сайтах

2 часа назад, Dimasscus сказал:

не придумал как на картинку наложить код ваучера и сумму.:))

https://www.php.net/manual/ru/function.imagettftext.php

Надіслати
Поділитися на інших сайтах

27 минут назад, slobGrower сказал:

@Dimasscus совершенно верно. Накидываете туда строки, затем рендерите pdf

Почитайте доки, там интересная библиотека. Стили можно подтянуть, к примеру

не разобрался с ней. решил попробовать dompdf

вроде все залил и подключил

в файле admin/model/sale/voucher.php

require_once DIR_APPLICATION.'model/sale/dompdf/lib/html5lib/Parser.php';
require_once DIR_APPLICATION.'model/sale/dompdf/lib/php-font-lib/src/FontLib/Autoloader.php';
require_once DIR_APPLICATION.'model/sale/dompdf/lib/php-svg-lib/src/autoload.php';
require_once DIR_APPLICATION.'model/sale/dompdf/src/Autoloader.php';
Dompdf\Autoloader::register();

use Dompdf\Dompdf;

в этом же файле перед строчкой  $mail->send();  добавил

$dompdf = new Dompdf();
                $bodyhtml = $this->load->view('mail/voucher', $data);				
 $html = <<<EOF
                <!DOCTYPE html>
                 <html lang="ru">
                <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 .'voucher' .$voucher_info['code'] .'.pdf';
				file_put_contents($file_pdf, $output);
				$mail->addAttachment($file_pdf);

но ни завелось.

если не разберусь- попробую библиотеку которую вы посоветовали, но не понял пока как ее подключить

Надіслати
Поділитися на інших сайтах


25 минут назад, chukcha сказал:

если таким образом сделать- картинка скачиваться в браузере будет с текстом?

Надіслати
Поділитися на інших сайтах


3 минуты назад, Dimasscus сказал:

если таким образом сделать- картинка скачиваться в браузере будет с текстом?

Да, вы имеет картинку
На картинку в нужное место накладывает нужный текст нужным шрифтом
Это также как и водяной знак.

 

Надіслати
Поділитися на інших сайтах

ругается что синтаксис не верен тут $this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($file);

но это оригинальный файл библиотеки. че не так то? что с = не так ? :))

Надіслати
Поділитися на інших сайтах


А нафиг заморачиваться? Отправляй на почту хтмл, а получатель сохранит (если нужно) в пдф. Иное дело, если нужно выдать квитанцию... Я когда-то (для престы) елал квитанцию швейцарскго банка - дебильная такая, не как у нас. Плюс еще к квитанции прайс заказа. Пришлось пошаманить, чтобы квитанцию пдф не разрывал. Уже и не помню, как реализовал, но припоминаю, шо селал счетчик строк, чтобы сама квитанция выхоила на отдельном листе. Там шаблон на Смарти, но легко передалать. Ну и на престе хорошая либа для печати пдф.

И чукча правльно сказал. Сделай картинку как бэкграунд, а текстовку на него наложи.

<div style="background-image: url(тут картинка');">тут текст</div>

ну сам текст форматируешь стилями (позиционирование, шрифт и т.п.)

Надіслати
Поділитися на інших сайтах

4 минуты назад, esculapra сказал:

А нафиг заморачиваться? Отправляй на почту. хтмл, а получатель сохранит (если нужно) в пдф Иное дело, если нужно выдать квитанцию... Я когда-то (для престы) елал квитанцию швейцарскго банка - дебильная такая, не как у нас. Плюс еще к квитанции прайс заказа. Пришлось пошаманить, чтобы квитанцию пдф не разрывал. Уже и не помню, как реализовал, но припоминаю, шо селал счетчик строк, чтобы сама квитанция выхоила на отдельном листе. Там шаблон на Смарти, но легко передалать. Ну и на престе хорошая либа для печати пдф.

И чукча правльно сказал. Сделай картинку как бэкграунд, а текстовку на него наложи.

<div style="background-image: url(тут картинка');">тут текст</div>

ну сам текст форматируешь стилями (позиционирование, шрифт и т.п.)

во первых <div style="background-image: url(тут картинка');">тут текст</div> не даст возможность сохранить картинку с текстом.

во вторых -"Отправляй на почту. хтмл, а получатель сохранит (если нужно) в пдф"- что он сохранит? письмо целиком? :)) или картинку отдельно от текста? мне нужно отправить сертификат с кодом. и именем получателя.

я вот не врублюсь что не так со строчкой $this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($file); на которую эта ошибка указывает https://c2n.me/4aflpHe ведь это файлы библиотеки и по идее там все ровно

Надіслати
Поділитися на інших сайтах


15 минут назад, esculapra сказал:

выведи print_r(Helpers::explode_url($file))

Parse error: syntax error, unexpected '$bodyhtml' (T_VARIABLE) in говорит что вот так. но  там  $bodyhtml = $this->load->view('mail/voucher', $data);

поэтому все вроде должно быть ок

 

Надіслати
Поділитися на інших сайтах


[$this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($file);

array($this->protocol, $this->baseHost, $this->basePath) = Helpers::explode_url($file);

Надіслати
Поділитися на інших сайтах

21 минуту назад, esculapra сказал:

выведи print_r(Helpers::explode_url($file))


 

      if (!$this->protocol && !$this->baseHost && !$this->basePath) {
            [$this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($file);
        }
        print_r(Helpers::explode_url($file))

нет толку. также и бьет ошибку

Надіслати
Поділитися на інших сайтах


32 минуты назад, chukcha сказал:

[$this->protocol, $this->baseHost, $this->basePath] = Helpers::explode_url($file);

array($this->protocol, $this->baseHost, $this->basePath) = Helpers::explode_url($file);

ошибка та же

Надіслати
Поділитися на інших сайтах


ну вообщем разобрался но не до конца :)

кодировка лагает- кирилиwу в pdf выводит как ??????????

пробовал по всякому- пока не выходит

Надіслати
Поділитися на інших сайтах


вообщем победил. затра если что выложу если не забуду пошагово как делал

одна проблема осталась- в письме все огонь. а в pdf не помещается на а5

при этом на а 4 остается лишнее место, и немного криво

как то можно центровать этот момент?

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.