0

私は次の問題を抱えています:

これは私のコードです:

$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などをロードする方法がわからないかもしれません。私はマジェントで非常に新しいです。

ありがとうございました。

4

1 に答える 1

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">

PDF ファイルを HTML に埋め込む方法は他にもあります。PDF をHTML に埋め込む推奨方法は?

編集: たとえば、2 つのビュー アクションを作成できます。最初のものは HTML をレンダリングします。HTML 内で、埋め込みタグは PDF を生成する 2 番目のアクションを呼び出します。これが最善の解決策だとは思いませんが、簡単に機能するはずです:

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 に答える