2013-12-17 25 views
0

背景:它的'ae學習網站,當用戶在學習階段,它會顯示內容在第3頁閱讀,然後它將需要用戶做測試,當用戶克服所有挑戰時,它會顯示PDF證書。嘗試使用PHP和fpdf顯示pdf文件

目前的問題是:在到達最後一頁後,它總是向我展示了一些奇怪的話:(下面是所有的一部分)

(%PDF-1.3 3 0 OBJ <> endobj 4 0 OBJ < >流x 3R 2 35W( rQ w3T04 30PISp Z* [ (hx + (j * d 7W)

下面是部分代碼,其文件名是load_data.php

else if ($cur_page == $no_of_paginations){ 


     ob_end_clean(); 
     require("../fpdf.php"); 

     $pdf = new FPDF(); 
     $pdf->AddPage(); 
     $pdf->SetFont('Arial','B',16); 
     $pdf->Cell(40,10,'Hello World!'); 
     if (preg_match("/MSIE/i", $_SERVER["HTTP_USER_AGENT"])){ 
      header("Content-type: application/PDF"); 
     } else { 
      header("Content-type: application/PDF"); 
      header("Content-Type: application/pdf"); 
     } 
     $pdf->Output(); 
     exit; 
    } 

這裏是paginati阿賈克斯上:

function loadData(page){ 

//  debugger; 
     loading_show(); 
     $.ajax 
     ({ 
      type: "POST", 
      url: "load_data.php", 
      data: { page: +page, tableName: $.urlParam('modules') }, 
      //data: "page="+page, 
      success: function(msg) 
      { 
       $("#container").ajaxComplete(function(event, request, settings) 
       { 
        loading_hide(); 
        $("#container").html(msg); 
       }); 
      } 
     }); 
    } 
    loadData(1); // For first time page load default results 
    $('#container .pagination li.active').live('click',function(){ 
     var page = $(this).attr('p'); 
     loadData(page); 

    }) 

回答

3

FPDF允許您在輸出PDF時使用一些選項。您可以強制下載,將文件保存到文件系統,或者您可以將它們顯示在頁面上,但不能做的是生成PDF並以Jasper提到的內聯方式顯示它。這裏是你會做什麼:如您展開

require("../fpdf.php"); 

    $pdf = new FPDF(); 
    $pdf->AddPage(); 
    $pdf->SetFont('Arial','B',16); 
    $pdf->Cell(40,10,'Hello World!'); 
    if (preg_match("/MSIE/i", $_SERVER["HTTP_USER_AGENT"])){ 
     header("Content-type: application/PDF"); 
    } else { 
     header("Content-type: application/PDF"); 
     header("Content-Type: application/pdf"); 
    } 
    $pdf->Output(); 

您可能需要通過$ _GET具體數據參數傳遞,使這項工作正確的:

創建一個新文件(或許,show_pdf.php)這段代碼。

要顯示在頁面上,你會做這樣的事情:

else if ($cur_page == $no_of_paginations){ 
?> 
<iframe src="show_pdf.php?id=asdfasdf"></iframe> 
<?php 
} 
+0

謝謝!聽起來很棒!這是否意味着在show_pdf.php文件中,我只需要添加$ _GET來檢查id值是否爲asdfasdf並運行以下代碼 – Jusleong

+0

謝謝!有用! – Jusleong

1

它看起來像你試圖顯示PDF內聯。爲此,您應該創建一個帶有指向您的PDF創建腳本的源的IFRAME。這樣瀏覽器可以選擇是否可以顯示PDF,如果它不能,那麼該文件將被下載。

要點:瀏覽器不知道如何解釋你給的東西。

+0

感謝您的回覆,您能告訴我應該在哪裏添加iframe嗎?在else if($ cur_page == $ no_of_paginations)塊? – Jusleong

+1

您能否爲我提供一些fpdf和iframe的示例代碼 – Jusleong

+0

@ user3112938您的AJAX請求將發送到'load_data.php',這就是您想要加載到IFRAME中的內容。並且您希望將IFRAME放置在通常放置AJAX響應的HTML中(在#容器內)。看起來你需要改變你的PHP腳本來讀取'$ _GET'變量而不是'$ _POST',或者你可以使用JS創建IFRAME,然後用'method =「post」'創建一個表單,你的IFRAME,然後提交表格。 – Jasper

1

要顯示瀏覽器中的FPDF傳遞第二個參數 '我'

$filed = $pdf->Output('abc.pdf', 'I'); 
-1

使用一個對象,$( '#fact')。html('

Usted no tiene instalado un pugin para .pdf en este navegador。
Usted puede usar Este link para descargar el archivo PDF。

');