2013-02-22 59 views
26

我想讓dompdf在內部服務器上運行。使用默認的config.inc.php設置,我得到的運行演示相當於在下列「你好世界國際」腳本:dompdf無法加載

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設置。

非常感謝。

+3

可能重複-lib必須通過作曲者安裝或複製到lib/php-font-lib](http://stackoverflow.com/questions/13431905/php-font-lib-must-either-be-installed-via-composer-或-copy-to-lib-php-font-lib) – 2013-02-22 21:38:08

+0

任何人在閱讀本文後即使添加'php-font- lib'在'dompdf_config.inc.php'的332行改變'Font.php'的文件名爲'font.cls.php' – Sisir 2014-01-20 06:47:10

回答

72
  • 轉到https://github.com/PhenX/php-font-lib並下載庫。
  • 創建dompdf/lib/php-font-lib/classes/目錄。
  • 在壓縮文件中,取src/FontLib/文件夾的內容並將其粘貼到新創建的目錄中。

這似乎適用於我。

+0

很好用。 Upvoted。謝謝:) – Gogol 2014-10-24 08:09:01

+0

非常感謝... – ravisoni 2014-11-17 11:44:32

+0

謝謝....它的工作.... – 2015-09-23 05:05:51

0

如果您使用作曲家安裝dompdf,則需要將define("DOMPDF_ENABLE_AUTOLOAD", false);放在dompdf_config.custom.inc.php中。這將允許作曲者自動加載已經安裝的php-font-lib。 (見本期:https://github.com/dompdf/dompdf/issues/636

如果您不使用作曲家,請參閱Mikepote的答案。

0

如果錯誤是沒有做什麼其他的答案提示後更正爲:

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 

還有就是在那裏提到沒有類文件夾。

0

我幾乎完全相同的問題。我的代碼是在我的本地開發機器上運行 - 一個Windows機器 - 但後來在我們的生產服務器上失敗 - 一個Linux機器

問題在於「classes」目錄是小寫字母(\ app \ Vendor \ dompdf \ lib \ php-font-lib \ classes)哪個窗口不介意 - 但Linux是區分大小寫的!

只需在dompdf_config.inc中編輯以下行即可。php解決了這個問題:

require_once(DOMPDF_LIB_DIR . "/php-font-lib/Classes/Font.php"); 

爲了保持一致性,我在Windows機器上用大寫字母「C」重命名了目錄。

0

DOMPDF的新版本不工作「的作曲家安裝」或「作曲更新」。它需要特殊版本的字體庫,可能並不總是最新的版本,所以未來這可能會改變。但是您可以通過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"); 
[PHP的字體的