我遇到了下一个问题:
我尝试在一个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/pddf.php
但是使用magento有些东西不是直觉,也许我不知道如何加载pdf或其他东西。我对magento很新。
谢谢。答案 0 :(得分:0)
错误“某些数据已经输出,无法发送PDF文件”出现,因为Magento已经发送了标头输出。请查看http://php.net/manual/en/function.header.php以获取更多信息。
因此FPDF的Output()函数也发送头信息,它将'Content-Type'声明为'application / pdf'。这里的主要问题是您不能只在HTML标记之间放置PDF文件。 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中嵌入PDF文件:Recommended way to embed PDF in HTML?
编辑:例如,您可以创建两个视图操作。第一个呈现HTML。在HTML内部,embed-tag调用将生成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">