0

我遇到了下一个问题:

我尝试在一个 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 格式但没有看到我的 pdf 的白页时,我尝试使用纯 php 来做到这一点,一切都很好,例如: http: //milton.bommelme.com/fpdf/pdf。 php

但是对于magento,有些东西不是直觉,也许我不知道如何加载pdf或其他东西。我对magento很陌生。

谢谢你。

4

1 回答 1

0

出现错误“一些数据已经输出,无法发送 PDF 文件”是因为 Magento 已经发送了 header 输出。查看http://php.net/manual/en/function.header.php了解更多信息。

因此,FPDF 的 Output() 函数也在发送标头信息,并将“Content-Type”声明为“application/pdf”。这里的主要问题是您不能只在 HTML 标记之间放置 PDF 文件。PDF 是一种自己的格式,需要与 HTML 不同的 presantation 机制。就像在示例链接中一样,您提供的 PDF 文件由具有正确 Content-Type 声明的 embed-tag 嵌入:

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

还有其他在 HTML 中嵌入 PDF 文件的方法:在 HTML中嵌入 PDF 的推荐方法?

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

class Foo_Pdf_Controller_SomeController extends Mage_Core_Controller_Front_Action
{

    public function viewAction()
    {
        // View stuff
    }

    public function getPdfAction()
    {
        // create pdf

        $fpdf->output();
    }
}

嵌入标签调用 getPdf() 操作:

<embed width="100%" height="100%" name="plugin" src="url_to_getPdf_action" type="application/pdf">
于 2013-12-11T15:20:11.017 回答