我遇到了下一个问题:
我试图在一个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或其他什么。我对马根托很陌生。
谢谢。
出现错误"某些数据已经输出,无法发送PDF文件",因为Magento已经发送了标头输出。看看http://php.net/manual/en/function.header.php以获取更多信息。
因此,FPDF的Output()函数也在发送标头信息,它将"内容类型"声明为"application/pdf"。这里的主要问题是你不能仅仅把一个PDF文件放在HTML标签之间。PDF是一种自己的格式,需要与HTML不同的预测机制。与您提供的示例链接一样,PDF文件由具有正确内容类型声明的嵌入标记嵌入:
<embed width="100%" height="100%" name="plugin" src="http://milton.bommelme.com/fpdf/pddf.php" type="application/pdf">
还有其他方法可以将PDF文件嵌入HTML中:推荐将PDF嵌入HTML中的方法?
编辑:例如,可以创建两个视图操作。第一个渲染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">