Перейти к содержимому


Как отправить отчет-представление вложением в формате pdf


Сообщений в теме: 2

#1 olgawww

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 11 Апрель 2017 - 15:57

Добрый день.
Хочу, чтобы отчет приходил не письмом, а вложением в виде файла pdf
С подсказок на форуме
http://clientbase.ru...?showtopic=7564
http://clientbase.ru...?showtopic=6420
http://clientbase.ru...il&fromsearch=1
пытаюсь сделать через доп.действия с помощью php с использованием библиотек smarty, mpdf и команды sendmail

Вот тестовый код:
require_once "include/mpdf/mpdf.php";
require_once "include/Smarty/Smarty.class.php";
// Заполняем переменные данными
$data1 = "Пример";
$data2 = "123.45";
// Переносим переменные в отображение
$smarty->assign("data1", $data1);
$smarty->assign("data2", $data2);
$TemplSql = sql_query("SELECT form FROM cb_reports WHERE id='100'"); // шаблон отчета из базы
$Templ = sql_fetch_array($TemplSql);
$report=$smarty->fetch($Templ["form"]);
echo $report;
$stylesheet=".title {margin: 20px 0px;font-size: 23px;font-weight: bold;}.right_links {float: right;font-size: 12px;margin-top: 5px;}.img_print {vertical-align: bottom;border: none;margin-right: 3px;}";
$mpdf = new mPDF('utf-8', 'A4', '10', 'Arial', 0, 0, 5, 5, 5, 5);
$mpdf->charset_in = 'utf-8';
$mpdf->WriteHTML($stylesheet, 1);  //style css
$mpdf->list_indent_first_level = 0;
$mpdf->WriteHTML($report,2);//тело файла  
$file['content'] = $mpdf->Output("отчет тест.pdf", 'S');//формирование файла
$file['name'] = "отчет.pdf";
$file['disp'] = "attachment";
$file['type'] = "application/pdf";
$attach_files[] = $file;
$mailto="me@mail.ru";
$mailfrom="klient@mail.ru";
$html2="test №3";
$out=sendmail("Отчет тест-3 smarty",$html2,$mailto,$mailfrom,"КБ","","text/html","utf-8","",$attach_files,-1,1,0,0);


Не получается. Выходит ошибка
----------------------
Ошибка в вычислении.
758:
759:
Uncaught exception 'SmartyException' with message 'Unkown resource type '
----------------

Подскажите, пожалуйста, где ошибка?

Сообщение отредактировал olgawww: 12 Апрель 2017 - 11:03


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 12 Апрель 2017 - 09:36

$smarty->fetch принимает по умолчанию путь к файлу шаблона, а не его текст, как у вас. Если необходимо передать текст, нужно вначале указать другой тип ресурса (по умолчанию, повторюсь, это путь к файлу), в данном случае тип ресурса будет "string":

$report=$smarty->fetch('string:'.$Templ["form"]);

Собственно у вас и вышла из-за этого ошибка 'Unkown resource type'.

#3 olgawww

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 12 Апрель 2017 - 10:56

Спасибо преогромное!!! Все получилось!!!! :)





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных