Try to show pdf file using PHP and fpdf

自作多情 提交于 2019-12-19 04:37:21

问题


Background: Its' a e learning website, when user in the learning stage, it will show content for reading at first 3 pages, and after that it will need users to do the test, when users overcome all the challenges, it will show the pdf certificate.

Currently, the problem is: after reaching the last page, it always showing me some weird words: (below is part of all)

(%PDF-1.3 3 0 obj <> endobj 4 0 obj <> stream x�3R��2�35W(�r Q�w3T04�30PISp �Z*�[����(hx����+����(j*�d��7W)

Here is the part of the code, whose file name is 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;
    }

Here is the ajax for pagination:

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);

    })

回答1:


FPDF allows you a few options in outputting PDFs. You can force the download, save the file to a filesystem, or you can display them on the page, but what you can't do is generate a PDF and show it inline as Jasper mentioned. Here's what you'll do:

Create a new file (maybe, show_pdf.php):

    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();

You may need to pass in specific data parameters via $_GET to make this work right as you expand this code.

To show it on the page, you'll do something like this:

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



回答2:


It looks like you're trying to display the PDF inline. To do this you should create an IFRAME with a source that points to your PDF creation script. That way the browser can choose whether or not it can display the PDF, if it can't then the file will be downloadable.

Main point: the browser doesn't know how to interpret what you're giving it.




回答3:


To show fpdf in borwser pass second parameter 'I'

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



回答4:


Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;

Yii::$app->response->headers->add('Content-Type', 'application/pdf');

    $pdf = new FPDF();

    $pdf->AliasNbPages();
    $pdf->AddPage();
    $pdf->SetFont('Arial', 'B', 15);
    $pdf->Cell(40, 10, 'Hello World');
    $pdf->Output();



回答5:


Use a object, $('#fact').html('

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

');

来源:https://stackoverflow.com/questions/20645034/try-to-show-pdf-file-using-php-and-fpdf

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!