+7 (812) 309-85-10
+7 (812) 909-40-35
Разработка сайтов
Продвижение сайтов
Техническая поддержка
Маркетплейсы
require_once('tcpdf/tcpdf.php');
TCPDF ERROR: Some data has already been output, can't send PDF file
ob_end_clean();
//указываем путь к файлу $font = $_SERVER["DOCUMENT_ROOT"] . '/tcpdf/fonts/segoeui.ttf'; // преобразуем шрифт $fontname = $pdf->addTTFfont($font, 'TrueTypeUnicode', '', 96); // устанавливаем шрифт для всего файла $pdf->SetFont($fontname, '', 14, '', false);
// Создаем шапку и футер class MYPDF extends TCPDF { //Шапка public function Header() { // Логотип $image_file = $_SERVER['DOCUMENT_ROOT'] .'/img/logo.png'; $this->Image($image_file, 10, 10, 15, '', 'PNG', '', 'T', false, 400, '', false, false, 0, false, false, false); // Шрифт и цвет текста $this->SetFont('segoeui', '', 8); $this->SetTextColor(101, 101, 101); // Контакты $contacts = 'Здесь будут контакты'; $this->writeHTML($contacts, true, 0, true, 0); } // Футер public function Footer() { // Устанавливаем отступ от нижнего края страницы $this->SetY(-15); // Шрифт и цвет текста $this->SetFont('segoeui', 'I', 8); $this->SetTextColor(101, 101, 101); //Дополнительная информация $info = '<span style="text-align:center;">Информация актуальна на '.date("d.m.Y").'.</span>'; $this->writeHTML($info, true, 0, true, 0); // Номер страницы $this->Cell(0, 10, 'Страница '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M'); } }
// выключаем шапку и футер $pdf->setPrintHeader(false); $pdf->setPrintFooter(false);
//Если мы использовали класс MYPDF для создания шапки и футера $pdf = new MYPDF('P', 'mm', 'A4', true, 'UTF-8'); //Если шапка и футер нам не нужны $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8');
//Основная информация о файле $pdf->SetCreator('Создатель'); $pdf->SetAuthor('Автор файла'); $pdf->SetTitle('Название файла'); $pdf->SetSubject('Тема'); $pdf->SetKeywords('Ключевые слова'); //Устанавливаем отступы от края для всех страниц (слева, сверху, справа, снизу) $pdf->SetMargins(10, 40, 10, 10); // Устанавливаем шрифт, который будет использоваться в документе $pdf->SetFont('segoeui', '', 12, '', false); $pdf->AddPage(); // Добавляем страницу $pdf->SetDrawColor(210, 100, 0); // Установка цвета (RGB) $pdf->SetTextColor(71, 71, 71); // Установка цвета текста (RGB)
// writeHTML($html, $ln=true, $fill=false, $reseth=false, $cell=false, $align='') // writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=0, $reseth=true, $align='', $autopadding=true)
$pdf->Output($_SERVER['DOCUMENT_ROOT'] .'/file.pdf', 'FI'); // Сохранить и вывести в браузер
//После записи в файл строки получаем текущую позицию по вертикали $point = $pdf->GetY(); //Формат листа A4, а это 297 мм в высоту. Самая минимальная строка с данными - в высоту примерно 50. Следовательно, если даже маленькая строка не помещается на страницу - переходим на следующую. if (($point + 50) > 297){ $pdf->AddPage(); }
I: отправка встроенного файла в браузер (по умолчанию). Плагин используется, если он доступен. Имя, указанное по имени, используется при выборе опции "Сохранить как" в ссылке, генерирующей PDF.D: отправить в браузер и принудительно загрузить файл с именем, заданным по имени.F: сохранить в файл локального сервера с имя, данное по имени.S: возвращает документ в виде строки (имя игнорируется).FI: эквивалент опции F + IFD: эквивалент опции F + DE: возврат документа в виде вложения электронной почты base64 MIME multi-part (RFC 2045)
$(document).ready(function(){ //Передаем данные в ajax $( "#form" ).submit(function (event){ $('.preloader').show(); //Отображаем прелоадер event.preventDefault(); //Не перезагружаем страницу let now = Date.now(); //Получаем дату и время в формате TIMESTAMP $.ajax({ type: 'POST', url: '/ajax.php', data: { .......... //Здесь передаем данные из формы "date":now, //Передаем текущие дату и время } }).done(function(response) { //Если запрос успешно отработал //console.log(response); window.open('/files/file' + now + '.pdf','_blank'); //Открываем в новом окне файл, созданный TCPDF $('.preloader').hide(); //Прячем прелоадер window.setTimeout(function () { //Через 5 секунд удаляем файл dataString2 = 'Downloaded=true'; $.ajax({ type: 'post', url: '/delete.php', data: dataString2, }); }, 5000); }).fail(function(response) { console.log(response); }); }); })
//В файле ajax.php сохраняем сгенерированный файл с приставкой даты и времени $pdf->Output($_SERVER['DOCUMENT_ROOT'] .'/files/file'.$_REQUEST["date"].'.pdf', 'FI');
Разработчик - это в крови. Люблю Битрикс, нестандартные задачи и интересные проекты.
© 2023 Digital-агентство полного цикла "НастАртВЕБ"