Самому нужна была такая тема, реализовал немного криво, но кое что есть.Требуется доработка, т.к. php я особо не знаю.
Идём в папку, открываем следующий файл
Z:\home\localhost\www\components\com_breezingforms\
facileforms.process.phpТам ищем строчку
// sendMail.Функция
exppdf. В этой функции выполняется генерация самого pdf файла со всем необходимым нам содержимым.
function exppdf($filter = array(), $mailback = false) {
global $ff_compath;
$file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/' . $this->formrow->name . '_pdf_attachment.php';
if (!JFile::exists($file)) {
$file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/pdf_attachment.php';
}
if ($mailback) {
$mb_file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/' . $this->formrow->name . '_pdf_mailback_attachment.php';
if (JFile::exists($mb_file)) {
$file = $mb_file;
} else {
$mb_file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/pdf_mailback_attachment.php';
if (JFile::exists($mb_file)) {
$file = $mb_file;
}
}
}
$processed = array();
$xmldata = array();
$_xmldata = $this->xmldata;
if ($mailback) {
$_xmldata = $this->mb_xmldata;
}
foreach ($_xmldata as $data) {
if (!in_array($data[_FF_DATA_NAME], $filter) && !in_array($data[_FF_DATA_NAME], $processed)) {
$xmldata[] = $data;
//$processed[] = $data[_FF_DATA_NAME];
}
}
ob_start();
require($file);
$c = ob_get_contents();
ob_end_clean();
require_once(JPATH_SITE . '/administrator/components/com_breezingforms/libraries/tcpdf/tcpdf.php');
$pdf = new TCPDF();
$pdf->setPrintHeader(false);
$pdf->AddPage();
$pdf->writeHTML($c);
mt_srand();
$pdfname = $ff_compath . '/exports/ffexport-pdf-' . date('YmdHis'). '-' . mt_rand(0, mt_getrandmax()). '.pdf';
$pdf->lastPage();
$pdf->Output($pdfname, "F");
return $pdfname;
}
Как берутся данные с страницы?На сколько я понял всё берётся функцией
ob_get_contents(), из этих данных формируется наш pdf файл. В функцию
exppdf нужно вставить следующий код
///////////////////////////////////////////////////////
$createpdf = new TCPDF();
$createpdf->SetFont('freesansi', '', 15); //Строку эту можно и убрать, но тогда у Вас не будет отображать русский шрифт (
$createpdf->setPrintHeader(false);
$createpdf->AddPage();
$createpdf->writeHTML($c);
$createpdf->Output();
///////////////////////////////////////////////////////
В итоге, функция
exppdf выглядит у меня следующим образом:
// sendMail
function exppdf($filter = array(), $mailback = false) {
global $ff_compath;
$file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/' . $this->formrow->name . '_pdf_attachment.php';
if (!JFile::exists($file)) {
$file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/pdf_attachment.php';
}
if ($mailback) {
$mb_file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/' . $this->formrow->name . '_pdf_mailback_attachment.php';
if (JFile::exists($mb_file)) {
$file = $mb_file;
} else {
$mb_file = JPATH_SITE . '/administrator/components/com_breezingforms/pdftpl/pdf_mailback_attachment.php';
if (JFile::exists($mb_file)) {
$file = $mb_file;
}
}
}
$processed = array();
$xmldata = array();
$_xmldata = $this->xmldata;
if ($mailback) {
$_xmldata = $this->mb_xmldata;
}
foreach ($_xmldata as $data) {
if (!in_array($data[_FF_DATA_NAME], $filter) && !in_array($data[_FF_DATA_NAME], $processed)) {
$xmldata[] = $data;
//$processed[] = $data[_FF_DATA_NAME];
}
}
ob_start();
require($file);
$c = ob_get_contents();
ob_end_clean();
require_once(JPATH_SITE . '/administrator/components/com_breezingforms/libraries/tcpdf/tcpdf.php');
$pdf = new TCPDF();
$pdf->setPrintHeader(false);
$pdf->AddPage();
$pdf->writeHTML($c);
///////////////////////////////////////////////////////
$createpdf = new TCPDF();
$createpdf->SetFont('freesansi', '', 15);
$createpdf->setPrintHeader(false);
$createpdf->AddPage();
$createpdf->writeHTML($c);
$createpdf->Output();
///////////////////////////////////////////////////////
mt_srand();
$pdfname = $ff_compath . '/exports/ffexport-pdf-' . date('YmdHis'). '-' . mt_rand(0, mt_getrandmax()). '.pdf';
$pdf->lastPage();
$pdf->Output($pdfname, "F");
return $pdfname;
}
Что мы имеем:После тогда как мы на кнопку submit настроим отправку сообщений на мыло админа, автоматически после заполнения формы будет открываться pdf файл который можно будет сохранить.
Минусы:
-открывается в том же окне, хотелось чтобы в новом открывалось.
-Вставить бы этот код куда нибудь в другое место, чтобы его можно было прикрепить на любую кнопку, потому что мне допустим не нужна отправка сообщений =)
-Мне не нравится, что документ формируется из данных которые берутся функцией
ob_get_contents(). А эта функция берёт абсолютно всё.И данные браузера айпишника и т.д. Как сформировать свой документ, с нужными данными?