社内サーバーでdompdfを実行しようとしています。デフォルトのconfig.inc.php設定で、デモ「Hello Wolrd」スクリプトに相当するものを実行すると、次のメッセージが表示されます。
Warning: require_once(/var/www/dompdf-master/lib/php-font-lib/classes/font.cls.php): failed to open stream: No such file or directory in /var/www/dompdf-master/dompdf_config.inc.php on line 335
Fatal error: require_once(): Failed opening required '/var/www/dompdf-master/lib/php-font-lib/classes/font.cls.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/dompdf-master/dompdf_config.inc.php on line 335
オフにするとDOMPDF_ENABLE_AUTOLOAD
、この警告は表示されなくなりましたが、コードは次のように失敗します。
Fatal error: Class 'DOMPDF' not found in /var/www/rfq/test.php on line 115
コードは次のとおりです。
require_once("/var/www/dompdf-master/dompdf_config.inc.php");
$dompdf = new DOMPDF(); // this is the line that fails
$dompdf->load_html($quotehtml);
$dompdf->render();
$dompdf->stream("rfq".$_REQUEST['quoteid'].".pdf");
これはUbuntu 12.04で、パッチが最新のもので、デフォルトのApache設定があります。
本当にありがとう。
dompdf/lib/php-font-lib/classes/
ディレクトリ。src/FontLib/
フォルダを作成し、新しく作成したディレクトリに貼り付けます。それは私にとってはうまくいったようです。
これは、DOMPDFプロジェクトがGithubに移行した後の一時的な問題です。 この質問 への回答を参照してください。完全なパッケージを取得する最も簡単な解決策は、 Google CodeのDOMPDF 0.6 beta をダウンロードすることです。
Codeigniterでdompdfを使用しますが、GitHubからダウンロードしたファイルには必要なファイルがすべて含まれていません。 php-font-libのすべてのファイルが欠落しています。そのため、それをダウンロードして、それぞれのフォルダーにアップロードする必要がありました。したがって、codeigniterでdompdfを使用するには、ダウンロードする必要があります。
こちらをご覧ください http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/
ほぼ同じ問題がありました。私のコードはローカルの開発マシン(Windowsボックス)で動作していましたが、実稼働サーバー(Linuxボックス)で失敗していました
問題は、「classes」ディレクトリが小文字(\ app\Vendor\dompdf\lib\php-font-lib\classes)であり、Windowsはそれを気にしないということでしたが、大文字小文字を区別するLinuxはそうでした!
Dompdf_config.inc.phpの次の行を編集するだけで問題が解決しました。
require_once(DOMPDF_LIB_DIR . "/php-font-lib/Classes/Font.php");
一貫性を保つために、Windowsボックスのディレクトリの名前を大文字の「C」に変更しました。
Dompdfの新しいバージョンは、「composer install」または「composer update」では機能しません。常に最新バージョンであるとは限らないフォントライブラリの特別なバージョンが必要なので、これは将来変更される可能性があります。ただし、dompdfのドキュメントからインストール方法を見つけることができます。 作者がcomposer.json内でこれらのフォントバージョンをハードコーディングしていない理由はわかりませんが、とにかくここでそれを行う方法です
現在、ライブラリを使用する最も簡単で最良の方法は、git(公式ドキュメントから取得)を使用することです
git clone https://github.com/dompdf/dompdf.git
cd dompdf
git clone https://github.com/PhenX/php-font-lib.git lib/php-font-lib
cd lib/php-font-lib
git checkout 0.4
cd ..
git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib
cd php-svg-lib
git checkout v0.1
その後、あなたはちょうどすることができます
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$dompdf->loadHtml('hello world');
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream( "/path-to-save-pdf-file/sample.pdf");
他の答えが示唆することを行った後にエラーが修正されない場合:
In dompdf_config.inc.php, change line 332 to point to the actual location of your Font.php file.
mine was /php-font-lib/src/FontLib
言及されたCLASSESフォルダーはありません。
composerを使用してdompdfをインストールする場合、define("DOMPDF_ENABLE_AUTOLOAD", false);
をdompdf_config.custom.inc.phpに配置する必要があります。これにより、composerがphp-font-libが既にインストールされているので自動ロードできるようになります。 (この問題を参照してください: https://github.com/dompdf/dompdf/issues/636 )
コンポーザーを使用していない場合は、Mikepoteの回答を参照してください。