fpdf 创建文件后无法看到 header

unable to see header after fpdf creates file

我正在开发一个 wordpress 插件,

我想创建一个 pdf 文件,为此我使用了 fpdf

通过使用此代码,我能够生成 pdf 并将其保存到服务器

require('fpdf/html_table.php');
    $pdf=new PDF_HTML();
    $questions = $_POST['question'];
    $count = count($questions);
    $quests = "";
    $pdf->SetFont('times','',12);
    $pdf->SetTextColor(50,60,100);

    $pdf->AddPage('P');
    $pdf->SetDisplayMode(real,'default');

    $pdf->SetFontSize(12);

    for($i=1;$i<=$count;$i++)
    {
        $qus_id = $questions[$i-1];
        $get_q = "select * from `SelleXam_question` where `id`='$qus_id'";
        $get_q =  $wpdb->get_results($get_q);
        $questf = "Quest $i : ".$get_q[0]->question;
        $pdf->Cell(0, 10, $questf."\n");
        $pdf->Ln();
    }


        $dir='C:/wamp/www/';
        $filename= "filename.pdf";
        $pdf ->Output($dir.$filename);
        echo "Save PDF in folder";

但是当它保存并显示消息时Save PDF in Folder。我是unable to see the header part of the wordpress website.

或者当我使用

$pdf->Output($filename,'D');

那么有什么方法可以在 link

中显示文件

当您为 Wordpress 开发时,您不能随时 echo 文本。 Wordpress 有一系列 actions 它通过逐步生成呈现给浏览器的输出。如果你在不合适的时间生成输出,你会搞砸 Wordpress 在正确的时间生成输出的能力。

如果我正在开发它,我会将此函数称为 filter on the_content。您的输出代码将更改为如下所示:

function append_pdf_to_content($content) {
    //Your existing code

    $pdf->Output($filename, 'F');
    $pdf_link = "<br><a href='$filename' download>Download PDF</a>"
    return $content . $pdf_link;
}

add_filter('the_content', 'append_pdf_to_content');

如果您想使用 D 选项,您需要 link 您的用户使用调用下载的 target='_blank' 单独的 php 页面.否则 PDF headers 将覆盖任何 headers Wordpress 尝试发送的文件。

顺便说一句,您可能还想看看 mPDF,它是 fpdf 的一个分支,并且仍在积极开发中。