繁体   English   中英

magento FPDF错误:已经输出了一些数据,无法发送PDF文件

[英]magento FPDF error: Some data has already been output, can't send PDF file

我有下一个问题:

我尝试在一个magento phtml中看到一个pdf文件,这是我的代码:

$fileName = Mage::getConfig()->getOptions()->getMediaDir()."/pdf/Gutschein-v2.pdf";

$pdf = new FPDI();
$pdf->addPage();
$pdf->setSourceFile($fileName);

$tplIdx = $pdf->importPage(1);
// use the imported page and place it at point 10,10 with a width of 100 mm

$pdf->useTemplate($tplIdx, 10, 10, 100);

// now write some text above the imported page
$pdf->SetFont('Helvetica');
$pdf->SetTextColor(255, 0, 0);
$pdf->SetXY(30, 30);
$pdf->Write(0, 'This is just a simple text');

//ob_start();
$pdf->Output();
//ob_end_flush(); 

当我评论ob_start(); 我在屏幕上看到下一个错误:FPDF错误:已经输出了一些数据,无法发送PDF文件

当我不发表评论时,看到的是正常的pdf格式,但没有白页,我尝试使用纯PHP来做到这一点,并且一切正常,例如: http : //milton.bommelme.com/fpdf/pddf。的PHP

但是用magento并不是什么东西,也许我不知道如何加载pdf或其他东西。 我对magento很陌生。

谢谢。

出现错误“某些数据已经输出,无法发送PDF文件”,因为Magento已经发送了标题输出。 有关更多信息,请访问http://php.net/manual/zh/function.header.php

因此,FPDF的Output()函数还将发送标头信息,并且将“ Content-Type”声明为“ application / pdf”。 这里的主要问题是您不能仅将HTML文件放在HTML标签之间。 PDF是一种自己的格式,与HTML相比需要不同的呈现机制。 就像在示例链接中一样,您给PDF文件添加了带有正确Content-Type声明的embed-tag:

<embed width="100%" height="100%" name="plugin" src="http://milton.bommelme.com/fpdf/pddf.php" type="application/pdf">

还有其他将HTML文件嵌入HTML的方法: 建议将PDF嵌入HTML的方法?

编辑:例如,您可以创建两个视图操作。 第一个呈现HTML。 在HTML内,embed标签会调用第二个操作,该操作将生成PDF。 我认为这不是最好的解决方案,但它应该很容易工作:

class Foo_Pdf_Controller_SomeController extends Mage_Core_Controller_Front_Action
{

    public function viewAction()
    {
        // View stuff
    }

    public function getPdfAction()
    {
        // create pdf

        $fpdf->output();
    }
}

embed-tags调用getPdf()操作:

<embed width="100%" height="100%" name="plugin" src="url_to_getPdf_action" type="application/pdf">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM