Я использую класс TCPDF для создания PDF. Сначала я отправляю некоторые данные в формате json (jquery), тогда я хотел бы сгенерировать PDF с этими данными.
Не могли бы вы сказать мне, прав ли я. Я должен генерировать PDF, сохранять его на сервере, а затем, если ajax-вызов возвращает успех, перенаправьте пользователя в этот pdf-файл. Это хороший способ?
У меня есть:
$.ajax({ url: '/pdf/fiele_to_generate_pdf.php', type: 'POST', contentType: "application/json; charset=utf-8", data: $.toJSON(jsonObj), processData: false, dataType: 'html', async: false, success: function(html) { window.location.href = '/pdf/example.pdf'; } });
Спасибо за любой совет.
Изменить: Поэтому я отправил запрос на создание PDF-файла через Ajax на сервер, затем файл pdf был сгенерирован и сохранен на сервере. Затем я использовал window.location.href для перенаправления пользователя в этот pdf-файл. Все работает, но я бы хотел избежать сохранения файла на сервере. Есть идеи?
Ok этот скрипт сохранит файл, а также отобразит его в браузере.
трюк заключается в использовании метода вывода с помощью «F» или «I»:
$pdf->Output("your path", 'F'); //save pdf $pdf->Output('file.pdf', 'I'); // show pdf
<?php class PDF extends TCPDF { public function Header (){ $this->SetFont('dejavusans', '', 14); $title = utf8_encode('title'); $subtitle = utf8_encode('sub title'); $this->SetHeaderMargin(40); $this->Line(15,23,405,23); } public function Footer() { $this->SetFont('dejavusans', '', 8); $this-> Cell (0, 5, 'Pag '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'R', 0, '', 0, false, 'T', 'M'); } public static function makeHTML ($json){ $html = '<table border="0.5" cellspacing="0" cellpadding="4"> <tr> <th bgcolor="#DAB926" style="width:3%; text-align:left"><strong>you th</strong></th> </tr>'; for ($i=0; $i<count($json); $i++) { $a= $i+1; $html .= '<tr> <td style="width:15%; text-align:left">'.$json[$i]->Name.'</td> </tr>'; } $html .= '</table>'; return $html; } } function printReport ($json ) { set_time_limit(0); $pdf = new PDF("L", PDF_UNIT, "A3",true, 'UTF-8', false); $pdf->SetMargins (15, 27, 15, true); $pdf->SetFont('dejavusans', '', 8); $pdf->SetAutoPageBreak(TRUE,50); $pdf->AddPage(); //create html $html = $pdf->makeHTML($json); $pdf->writeHTML($html, false, false, false, false, ''); if (!file_exists("your path")) mkdir("your path"); $pdf->Output("your path", 'F'); //save pdf $pdf->Output('file.pdf', 'I'); // show pdf return true; } $json = json_decode("your json"); printReport($json); ?>