0

私はob_get_contents()を使用してphpファイルからhtmlファイルを作成しています。開発マシンでは動作することがありますが、テストマシンでは動作しませんでした。

<html>
<body>
    <div>
       //some html content
    </div>
</body>
</html>

<?php
    ob_start();
    file_put_contents('./pdfreportresult.html', ob_get_contents());

    require_once (APP_DIR . 'assessment/wkhtmltopdf/snappy-master/src/autoload.php');

    use Knp\Snappy\Pdf;

    $snappy = new Pdf(APP_DIR . 'assessment/wkhtmltopdf/wkhtmltopdf.exe');

    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="report.pdf"');
    echo $snappy->getOutput(APP_DIR . 'assessment/pdfreportresult.html');
    ob_end_clean();
?>

テストマシンのphp.iniでoutput_bufferingを確認しましたが、開発マシンと同じように「オン」になっています。作成したhtmlファイル「pdfreportresult.html」を確認したところ、空であるか、ハーフコンテンツが存在します。

おそらく問題はバッファサイズに関連している可能性があり、ob_end_clean()の代わりにob_clean()を試しましたがまだ機能していません。

4

1 に答える 1

3

コンテンツの出力を開始する前に、バッファを開始します。また、使い終わったらバッファをクリーンアップします。

<?php
ob_start();
?>
<html>
<body>
    <div>
       //some html content
    </div>
</body>
</html>

<?php
file_put_contents('./pdfreportresult.html', ob_get_contents());
ob_end_clean();
...
于 2012-12-25T12:21:00.843 に答える