0

dompdf を Symfony 2.1 プロジェクトで動作させるにはどうすればよいですか? このチュートリアルに従いましたが、まだこの例外が発生しています:

注意: 未定義の定数 DOMPDF_LIB_DIR の使用 - [blablabla]/vendor/dino/dompdf/lib/DOMPDF/stylesheet.cls.php 行 16 で「DOMPDF_LIB_DIR」を想定

これではない場合、Symfony 2.1 で html から pdf を作成するための最良かつ最も単純なライブラリは何ですか?

4

5 に答える 5

3

Symfony2 プロジェクトで DOMPDF を利用できるようにするために行ったことは次のとおりです。

  1. DinoPDF composer パッケージが必要です: php composer.phar require dino/dompdf、バージョン 0.1.1 (または dev-master)

  2. DomPDF 初期化ファイルは、ロード プロセスのどこかで required() する必要があります。

    • vendor/dino/dompdf/dompdf_config.inc.php.dist を app/dompdf_config.inc.php にコピーします。
    • vendor/dino/dompdf/dompdf_config.custom.inc.php.dist を app/dompdf_config.custom.inc.php にコピーします。
    • app/autoload.php に追加します:

      require_once __DIR__.'/dompdf_config.inc.php';
      

dompdf_config.inc.php は、DOMpdf インストールへのパスを定義します。DinoPDF の配布によってライブラリ内のパスが変更されたため、次の点に注意する必要があります。

DOMPDF_INC_DIR : 主な DOMPdf クラス。DOMPdf の dinoPDF ディストリビューションでは、このフォルダーの名前が dompdf/include から dompdf/lib/DOMPDF に変更されています。

DOMPDF_LIB_DIR : 追加のリソース - フォントなど

dompdf_config.inc.php に導入した変更は次のとおりです。

/**
 * The root of your DOMPDF installation
 */
define("DOMPDF_DIR", str_replace(DIRECTORY_SEPARATOR, '/',                     realpath(__DIR__.'/../vendor/dino/dompdf/')));
/**
 * The location of the DOMPDF include directory
 * Main DOMPdf classes
 * In dinoPDF distribution of DOMPdf this folder is renamed from dompdf/include to     dompdf/lib/DOMPDF
 */
define("DOMPDF_INC_DIR", DOMPDF_DIR . "/lib/DOMPDF");

/**
 * The location of the DOMPDF lib directory
 * Additional resources - fonts, etc.
 * In dinoPDF distribution of DOMPdf this folder is renamed from dompdf/lib to     dompdf/lib/vendor
 */
define("DOMPDF_LIB_DIR", DOMPDF_DIR . "/lib/vendor");

/** Include the custom config file if it exists */
if ( file_exists(__DIR__ . "/dompdf_config.custom.inc.php") ){
    require_once(__DIR__ . "/dompdf_config.custom.inc.php");
}

def("DOMPDF_FONT_DIR", DOMPDF_LIB_DIR . "/fonts/");

これにはライブラリが正しく含まれている必要があるため、コントローラーで使用できます。このような:

/**
 * @Route("/export_pdf", name="export_pdf")
 */
public function exportPDFAction($id)
{   
    $html =
    '<html><body>'.
    '<p>Put your html here, or generate it with your favourite '.
    'templating system.</p>'.
    '</body></html>';

    $dompdf = new \DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();

    $response = new Response();

    $response->setContent($dompdf->output());
    $response->setStatusCode(200);
    $response->headers->set('Content-Type', 'application/pdf');

    return $response;
}
于 2012-11-27T22:18:27.887 に答える
2

dompdf 自体が基本的なコンポーザーをサポートするようになったため、はるかに簡単な方法があります: http://blog.viison.com/post/58696419659/dompdf-symfony2

ここに手順をインラインで投稿できなくて申し訳ありませんが、私はすでにブログ投稿を書いています!

于 2013-10-08T10:21:37.667 に答える
1

DomPDF を Symfony2 プロジェクトに含めるには、もっと簡単な方法があります。

まず、DomPDF をcomposer.jsonファイルに追加します。

{   
    "require": {
        // ...
        "dompdf/dompdf": "dev-master"
    }
}

インストール後、Symfony アプリケーションのファイルを編集し、app/autoload.phpこれらの行を末尾 (returnステートメントの前)に追加します。

// Requirements for DOMPDF
define('DOMPDF_ENABLE_AUTOLOAD', false);
require_once __DIR__.'/../vendor/dompdf/dompdf/dompdf_config.inc.php';

そして、あなたは完了です!

しかし、Slavik が上で述べたように、dompdfを使用する KnpSnappyBundle などのより良い解決策があるかもしれませんwkhtmltopdf

于 2013-11-07T15:37:41.820 に答える
0

他のオプションが存在します。例:

wkhtmltopdf - 標準準拠を保証する WebKit エンジンに基づくコンソール html2pdf 変換ツール。

KnpSnappyBundle - Symfony2 と wkhtmltopdf を統合するバンドル

于 2012-11-30T18:09:32.507 に答える
0

dompdf_config.inc.phpファイルも含める必要があります。

于 2012-09-20T13:41:40.640 に答える