web-dev-qa-db-ja.com

dompdfの読み込みに失敗する

社内サーバーで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設定があります。

本当にありがとう。

28
Mark T. Johns
  • https://github.com/PhenX/php-font-lib に移動して、ライブラリをダウンロードします。
  • dompdf/lib/php-font-lib/classes/ディレクトリ。
  • Zipファイルで、src/FontLib/フォルダを作成し、新しく作成したディレクトリに貼り付けます。

それは私にとってはうまくいったようです。

74
Mikepote

これは、DOMPDFプロジェクトがGithubに移行した後の一時的な問題です。 この質問 への回答を参照してください。完全なパッケージを取得する最も簡単な解決策は、 Google CodeのDOMPDF 0.6 beta をダウンロードすることです。

4
Jpsy

Codeigniterでdompdfを使用しますが、GitHubからダウンロードしたファイルには必要なファイルがすべて含まれていません。 php-font-libのすべてのファイルが欠落しています。そのため、それをダウンロードして、それぞれのフォルダーにアップロードする必要がありました。したがって、codeigniterでdompdfを使用するには、ダウンロードする必要があります。

こちらをご覧ください http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/

2
Valko Valkov

ほぼ同じ問題がありました。私のコードはローカルの開発マシン(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」に変更しました。

0
foxbeefly

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");
0
omer Farooq

他の答えが示唆することを行った後にエラーが修正されない場合:

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フォルダーはありません。

0
cMinor

composerを使用してdompdfをインストールする場合、define("DOMPDF_ENABLE_AUTOLOAD", false);をdompdf_config.custom.inc.phpに配置する必要があります。これにより、composerがphp-font-libが既にインストールされているので自動ロードできるようになります。 (この問題を参照してください: https://github.com/dompdf/dompdf/issues/636

コンポーザーを使用していない場合は、Mikepoteの回答を参照してください。

0
Loren