Конвертация html в pdf до отправки sendmail
#1
Отправлено 02 Апрель 2017 - 17:33
#2
#3
Отправлено 03 Апрель 2017 - 09:13
Эта простая в использовании утилита (X означает eXtended) преобразует файлы HTML в DOC, XLS, PDF, JPG или Text даже на веб-сервере, в отличие от обычного Total HTML Converter. Принцип работы программы такой же, как и у остальных продуктов - самым сложным является определение Вами нужного формата конечных файлов преобразования HTML. Вы просто выбираете файлы и конечный формат, затем жмете Ok. Total HTML Converter X сделает все остальное!
С Total HTML Converter X Вы также можете преобразовывать множество файлов одновременно, если имеете дело с их большим количеством. Некоторые предпочитают использовать программу при помощи командной строки, находя это более удобным. Используйте Total HTML Converter X для быстрого и легкого конвертирования своих HTML файлов!
Может его попросить встроить в КБ?
#4
Отправлено 03 Апрель 2017 - 09:16
Как-то ведь скрипт подключить сначала надо? Или просто повесить во внешних файлах, если встроенного нет?
include("mpdf.php"); //Кодировка | Формат | Размер шрифта | Шрифт //Отступы: слева | справа | сверху | снизу | шапка | подвал $mpdf = new mPDF('utf-8', 'A4', '10', 'Arial', 0, 0, 5, 5, 5, 5); $mpdf->charset_in = 'utf-8'; $stylesheet = 'table { text-align: center; width: 320px; color: #ff44ee; margin: 0; float: left; } td { width: 80px; }'; //Записываем стили $mpdf->WriteHTML($stylesheet, 1); $mpdf->list_indent_first_level = 0; //Записываем html $mpdf->WriteHTML($html, 2); $mpdf->Output('mpdf.pdf', 'I');
Сообщение отредактировал Александр Пономарев: 03 Апрель 2017 - 09:32
#5
Отправлено 03 Апрель 2017 - 09:45
Цитата
Это серверная утилита, ее нельзя встроить в программу. В КБ можно встроить только PHP библиотеку или класс.
Цитата
Да, в include\mpdf
Пример использования вы уже сами выложили.
#6
Отправлено 03 Апрель 2017 - 10:00
Вы ответы пишете быстрее, чем я вопросы задаю :-)
Пошел копать дальше. Кстати, а нельзя ли где-нибудь выложить классы и их описания, которые вы уже ипользуете и как их подключать?
Сообщение отредактировал Александр Пономарев: 03 Апрель 2017 - 10:02
#7
Отправлено 03 Апрель 2017 - 10:02
CbCoder (03 Апрель 2017 - 09:45) писал:
Да, в include\mpdf
Пример использования вы уже сами выложили.
Вы отвечаете быстрее, чем я спрашиваю :-)
Сообщение отредактировал Александр Пономарев: 03 Апрель 2017 - 10:03
#8
Отправлено 03 Апрель 2017 - 10:38
require_once "include/mpdf/mpdf.php";
//Кодировка | Формат | Размер шрифта | Шрифт
//Отступы: слева | справа | сверху | снизу | шапка | подвал
$mpdf = new mPDF('utf-8', 'A4', '10', 'Arial', 0, 0, 5, 5, 5, 5);
$mpdf->charset_in = 'utf-8';
$stylesheet = 'table {
text-align: center;
width: 320px;
color: #ff44ee;
margin: 0;
float: left;
}
td {
width: 80px;
}';
//Записываем стили
$mpdf->WriteHTML($stylesheet, 1);
$mpdf->list_indent_first_level = 0;
//Записываем html
$mpdf->WriteHTML($html2, 2);
//$mpdf->Output('mpdf.pdf', 'I');
$file['name'] = "schet.pdf";
$file['disp'] = "attachment";
$file['type'] = "text/html";
$file['content'] = $mpdf;
$attach_files[] = $file;
$out=sendmail("Счет № ".$nom." от ".$data." на ".$summ_it." рублей",$html2,$mail_adres,$adr_otpr,"РИФИНИТУРА","","text/html","utf-8","",$attach_files,-1,1,0,0);
У меня подозрения на строки
$file['type'] = "text/html"; - может быть тут надо pdf указывать?
и самое большое на строку
$file['content'] = $mpdf;
Я так понимаю, что там нужно как-то по другому передавать в переменную содержимое pdf файла?
Хотя $mpdf->Output('mpdf.pdf', 'I'); - это же просто вывод этого содержимого на экран, верно?
Возможно, там есть какой-то иной метод для присвоения переменной? Какой?
#9
Отправлено 03 Апрель 2017 - 10:52
Цитата
Да, разумеется, "application/pdf".
Цитата
Возможно, там есть какой-то иной метод для присвоения переменной? Какой?
Да, вам нужен не вывод на экран, а вывод бинарного потока, который можно засунуть в переменную, для этого задается 'S' вместо 'I':
$file['content'] = $mpdf->Output('mpdf.pdf', 'S');
#10
Отправлено 03 Апрель 2017 - 10:58
#11
Отправлено 03 Апрель 2017 - 12:45
#12
Отправлено 03 Апрель 2017 - 13:02
#13
Отправлено 03 Апрель 2017 - 17:12
Цитата
Не в базе, а в локальной папке, например в том же cache, как уже сказал.
#14
Отправлено 03 Апрель 2017 - 17:47
require_once "include/mpdf/mpdf.php"; $mpdf = new mPDF('utf-8', 'A4', '10', 'Arial', 0, 0, 5, 5, 5, 5); $mpdf->charset_in = 'utf-8'; $stylesheet = 'table { text-align: center; width: 100%; color: black; margin: 0; float: left; font-size:12pt; } td { margin:0 px; text-align:left; } div {margin:0px; padding:0px;} .tk {border:1px solid black; padding:3pt;} '; $mpdf->WriteHTML($stylesheet, 1); $mpdf->list_indent_first_level = 0; $mpdf->WriteHTML($html2, 2); $n_f="Счет № ".$nom.".pdf"; $mail_adres=mf_par_kli($kli,5); $adr_otpr=mf_user_mail($uID); // Адрес текущего менеджера $postHTML=$mpdf->Output($n_f, 'S'); $file=""; $file['name'] = $n_f; $file['disp'] = "attachment"; $file['type'] = "application/pdf"; $file['content'] = $postHTML; $attach_files=$file; $subject="Счет № ".$nom; $message="Счет в формате pdf находится во вложении"; $out=sendmail($subject,$message,$mail_adres,$adr_otpr,"РИФИНИТУРА",$adr_otpr,"application/pdf","utf-8","",$attach_files,-1,1,0,0); $mpdf->Output($n_f, 'I');
Письмо приходит без вложения, а экран зависает. Смущают меня application/pdf в двух местах. Может надо только в одном указывать этот тип? в file?
Сообщение отредактировал Александр Пономарев: 03 Апрель 2017 - 17:57
#15
Отправлено 03 Апрель 2017 - 18:03
CbCoder (03 Апрель 2017 - 17:12) писал:
Не в базе, а в локальной папке, например в том же cache, как уже сказал.
Можно на основе моего кода показать, как правильно добавлять печать и подпись на документ, который потом отсылать в pdf на почту клиенту. Думаю, этот пример многим бы помог на этом форуме.
Сообщение отредактировал Александр Пономарев: 03 Апрель 2017 - 18:05
#16
Отправлено 04 Апрель 2017 - 12:28
Цитата
Указывать надо там где тип соответствует. Если у вас во вложении файл pdf - то именно во вложении и должен быть тип pdf. А само письмо не может быть с типом pdf - оно либо в html, либо в plain text.
Цитата
Из базы данных картинка вставляется через php скрипт. Я уже написал выше, что pdf таки картинки не конвертит, несмотря на то что в html они отображаются. И там же предложил решение - сохранять картинку в cache и ссылаться в коде на cache. Или вы не читаете мои сообщения?
#17
Отправлено 04 Апрель 2017 - 17:24
CbCoder (04 Апрель 2017 - 12:28) писал:
Из базы данных картинка вставляется через php скрипт. Я уже написал выше, что pdf таки картинки не конвертит, несмотря на то что в html они отображаются. И там же предложил решение - сохранять картинку в cache и ссылаться в коде на cache. Или вы не читаете мои сообщения?
Читаю. Но я хоть и сильно продвинулся в php, пока еще только учусь в узких вопросах, которые редко встречаются. С учетом того, что форум читают и совсем начинающие, было бы неплохо для них приводить примеры кода. Например, как именно сохранить в кэше картинку, чтобы она попала в pdf на том месте, где ей положено быть в соответствии с html разметкой. Вы думаете я так часто работаю с кэшем и изображениями в нем, как вы? Мне сейчас надо перекопать кучу инфы и всем, кто идет следом тоже. Не проще бы было просто выставить здесь мой код с доработками, чтобы он заработал? И все потом будут просто делать копи-пасте и не будут доставать вас вопросами.
#18
Отправлено 04 Апрель 2017 - 17:26
#19
Отправлено 04 Апрель 2017 - 21:31
#20
Отправлено 05 Апрель 2017 - 10:07
Количество пользователей, читающих эту тему: 13
0 пользователей, 13 гостей, 0 анонимных