2016-07-20 4 views
0

Я попытался преобразовать html-страницу в pdf и решил использовать mPDF, я следую тому, что делает документация. При запуске кода он не запрашивает PDF-запрос на сохранение. Btw Я получаю код ошибки.Ошибка mPDF на Codeigniter

вот код от Controller.

//this data will be passed on to the view 
    $data['the_content']='mPDF and CodeIgniter are cool!'; 

    //load the view, pass the variable and do not show it but "save" the output into $html variable 
    $html=$this->load->view('ajax/pdf_output', $data, true); 

    //this the the PDF filename that user will get to download 
    $pdfFilePath = "the_pdf_output.pdf"; 

    //load mPDF library 
    $this->load->library('m_pdf'); 
    //actually, you can pass mPDF parameter on this load() function 
    $pdf = $this->m_pdf->load(); 
    //generate the PDF! 
    $pdf->WriteHTML($html); 
    //offer it to user via browser download! (The PDF won't be saved on your server HDD) 
    $pdf->Output($pdfFilePath, "I"); 

Ниже приведен результат я получаю: % PDF-1.4% 3 0 объект <>/Содержание 4 0 R >> endobj 4 0 объект <> поток хР] вывода @ 㓚 ^1 h 7 C B (h sW Fs vvv B ') ձ Cgha 6 Mp 6 H U [P { - [ uz # 뮉 r @ Υ 9 R ' J h & e J YW f \ /m Ӷ Jw j N ގ ^ = f! ƲO o 92yh m���9� �e��[��#�3���?u�R%_�¿�)�X|jt2H׆��+��S�� ™ 9% R : ƒ7 m Z 9n endstream endobj 1 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> stream/CIDInit/ProcSet findresource begin 12 dict begin begincmap/CIDSystemInfo <> def/CMapName/Adobe-Identity-UCS def/CMapType 2 def 1 begincodespacerange < 0000> endcodespacerange 1 beginbfrange < 0000> < 0000> endbfrange endcmap CMapName currentdict/CMap defineresource pop end end endstream endobj 9 0 obj <> endobj 10 0 obj < >>/FontFile2 12 0 R >> endobj 11 0 obj <> поток x VQfd% {дТ * л-Ȉ_s ڥ} @; т: НЦ n 3 m s B h JW nt [ Nw^ { & l GM7 l { z ^4 ^7] В-СП [К} [} G? f V n w endstream endobj 12 0 obj <> поток x | \ TU 9 ; . zqIe ] ce t ��apfQQ�q�qGKSS+5-K+Ӟ�z�6�35���gi���wν3d=��}����g�s�=������\0�B��4#+76�r����=\��}�O��:�p <7�r���G~BHH���EŖ�j��B�C_U��W /� q<��U�}��<�!��t�Qo��ۀPdwXN���<���X���<�~]��Po3oC(��_��gW��Ўz��r��8�XR!<����+�vG�B4�Q��� ����Z�<���(��^�Dhk��@��r'WQ����h4�F��i�Fw���H$�]�3�$77kBi(��e��A�=7�"凨����C���]D��.=�onf�577���l��$��y#����? ��CA(�G!(���#��:�Ѓ��uE݀�p�"Qw�z�����F}P4��bP,����8�EP<���h����h�yQJF)H�R�(4��1h,JG(e�l4��\��ƣ|4MD�@�S�T4 =���H:�Ev$���-�|�tdF3�r��w�\�����>�����~�N��0O Z ˀ ; 0 > H m $ Z | ^t E r Uo l/ì- a^ $ @ ΢O b A5h L ] tx1 $ d Y Y Jf , W qo Cf "< $ a2z " 8> = ' ˧ s */z [ * { @ x op: . O A { ? P Yz - ޡ ! Y } kP & T ] H "0 Qi c & oL Q c Ҥc C H 11 * = 6 { | .EE H ܉ dO [, ~ O 5 ֓ І,> ​​ lozG s 6Mo ^m 0P !, T # DK " SS ku # % 33 ̐ hz I z v zNG ` N " a [

Любой человек может сказать мне, что происходит с этим?

ответ

0

это выглядит как «я» параметр вызывает проблемы, так как браузер не распознает файл

по docu вы следующие возможности :

I: отправьте файл в строке браузера. Плагин используется, если он доступен. Имя, указанное $ filename, используется, когда вы выбираете опцию «Сохранить как» на ссылке, генерирующей PDF.

D: отправить в браузер и принудительно загрузить файл с именем, заданным $ filename.

F: сохранить в локальный файл с именем, заданным $ filename (может содержать путь).

S: вернуть документ в виде строки. $ filename игнорируется.

попробовать что-то вроде этого:

$pdf->Output($pdfFilePath, "D"); 
die; 

или с другой стороны, вы можете попробовать добавить заголовок, чтобы сказать браузер явно это PDF документ

header('Content-Type: application/pdf'); 
$pdf->Output($pdfFilePath, "I"); 
die; 

, потому что это может быть CIs класс outpout перезаписывает заголовок MPDF (но это только догадка)

+0

Меня судили за обоих: «Я» или «D». он возвращает ту же ошибку. –

+0

это что-то заблокировать или? –

0
$html=$this->load->view("ajax/pdf_output",$data,true); 
    //load mPDF library 
    $this->load->library('m_pdf'); 
    //generate the PDF from the given html 
    $this->m_pdf->pdf->WriteHTML($html); 
    //download it. 
    ob_clean(); 
    $this->m_pdf->pdf->Output($pdfFilePath,'F'); 

check your folder..... 
+0

Hi Kuldeep, $ this-> m_pdf-> pdf-> Выход ($ pdfFilePath, 'F'); работают нормально .. но он автоматически сохраняется на сервере. Любая идея по подсказке и попросить сохранить? –

0

Если вы wa нт шоу скачать диалог Ваша потребность разместить ниже код

$filename = time()."_order.pdf"; //your file name 
$html = $this->load->view('unpaid_voucher2',$data,true); 
/// $data variable is your dynamic data if you have no dynmic data then you can pass empty instead of variable like. 
$html = $this->load->view('unpaid_voucher2','',true); 
$this->load->library('M_pdf'); 
$this->m_pdf->pdf->WriteHTML($html); 

//For download pass D and save on server pass F. 
$this->m_pdf->pdf->Output("./uploads/".$filename, "D"); 

Вот полная конфигурация для integrate mpdf into codeigniter

0

строка является двоичным представлением PDF и его присутствие означает Content-type: application/pdf заголовок не отправляется правильно или он перекрываться ваш код или настройки. Скорее всего, по text/plain или text/html.

Попробуйте выяснить это:

  • Вы сброс Content-type заголовка в PHP коде где-то после вызова MPDF Output метода?
  • Является ли ваш сервер форсированным другим Content-type где-то в вашей настройке?
  • Поддерживает ли ваш браузер отображение application/pdf Контент-тип напрямую?

Учитывая, что режим D выход дает тот же результат, что я предполагаю, что заголовок Content-type настоящее время перекрываться где-то после вызова метода Output, предположительно CodeIgniter.