2013-02-22 13 views
26

Tôi đang cố gắng chạy dompdf trên máy chủ trong nhà. Với các thiết lập mặc định config.inc.php, tôi nhận được sau khi chạy tương đương với bản demo 'Hello Wolrd' kịch bản:dompdf không tải được

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 

Khi tôi tắt DOMPDF_ENABLE_AUTOLOAD, tôi không còn nhận được cảnh báo này, nhưng mã không thành công với những điều sau đây:

Fatal error: Class 'DOMPDF' not found in /var/www/rfq/test.php on line 115 

sau đây là đoạn code:

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"); 

Đây là Ubuntu 12.04, up-to-date trên các bản vá lỗi, với các thiết lập mặc định của Apache.

Cảm ơn rất nhiều.

+3

thể trùng lặp của [PHP-font -lib hoặc phải được cài đặt thông qua nhà soạn nhạc hoặc sao chép vào lib/php-font-lib] (http://stackoverflow.com/questions/13431905/php-font-lib-must-either-be-installed-via-composer- hoặc-copy-to-lib-php-font-lib) –

+0

Bất cứ ai đọc điều này và gặp vấn đề ngay cả sau khi thêm 'php-font- lib' thay đổi tên tập tin 'Font.php' thành' font.cls.php' trên dòng 332 của 'dompdf_config.inc.php' – Sisir

Trả lời

2

Chúng tôi sẽ sử dụng dompdf trong trình mã hóa NHƯNG tệp mà tôi đã tải xuống từ GitHub không có tất cả các tệp mà chúng tôi cần. Thiếu tất cả các tệp của php-font-lib. Vì vậy, chúng tôi phải tải xuống và tải lên thư mục tương ứng. Vì vậy, để có dompdf làm việc trong codeigniter bạn có thể phải tải về nó.

Xem ở đây http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/

72
  • Đi tới https://github.com/PhenX/php-font-lib và tải xuống thư viện.
  • Tạo thư mục dompdf/lib/php-font-lib/classes/.
  • Trong tệp zip, hãy lấy nội dung của thư mục src/FontLib/ và dán vào thư mục mới được tạo của bạn.

Điều đó dường như phù hợp với tôi.

+0

Hoạt động tốt. Được thăng hạng. Cảm ơn :) – Gogol

+0

Cảm ơn rất nhiều ... – ravisoni

+0

Cảm ơn bạn .... Nó đang hoạt động .... –

0

Nếu bạn đang sử dụng nhà soạn nhạc để cài đặt dompdf, bạn cần phải đặt define("DOMPDF_ENABLE_AUTOLOAD", false); trong dompdf_config.custom.inc.php. Điều này sau đó sẽ cho phép nhà soạn nhạc tự động tải php-font-lib vì nó đã được cài đặt. (Xem vấn đề này: https://github.com/dompdf/dompdf/issues/636)

Nếu bạn không sử dụng nhà soạn nhạc, hãy xem câu trả lời của Mikepote.

0

Nếu lỗi không khắc phục sau khi làm câu trả lời khác đề nghị gì:

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 

Không có thư mục LỚP đã được đề cập ở đây.

0

Tôi đã gặp gần như cùng một vấn đề. Mã của tôi đã làm việc trên máy dev cục bộ của tôi - một hộp Windows - nhưng sau đó đã thất bại trên máy chủ sản xuất của chúng tôi - một hộp Linux

Vấn đề là thư mục "lớp học" thấp hơn (\ app \ Vendor \ dompdf \ lib \ php-font-lib \ classes) mà cửa sổ không quan tâm - nhưng Linux là trường hợp nhạy cảm đã làm!

Chỉ cần chỉnh sửa dòng sau trong dompdf_config.inc.php đã giải quyết được sự cố:

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

Để nhất quán, tôi đã đổi tên thư mục bằng chữ hoa "C" trên hộp Windows.

0

Phiên bản dompdf mới không hoạt động với 'cài đặt trình soạn nhạc' hoặc 'bản cập nhật nhà soạn nhạc'. Nó cần các phiên bản đặc biệt của các thư viện phông chữ có thể không phải lúc nào cũng là các phiên bản mới nhất, do đó, điều này có thể thay đổi trong tương lai. Nhưng bạn có thể tìm cách cài đặt nó thông qua tài liệu của dompdf. Không biết tại sao các tác giả đã không mã hóa các phiên bản phông chữ này bên trong composer.json, nhưng dù sao thì đây cũng là cách thực hiện.

Hiện nay cách dễ nhất và tốt nhất của việc sử dụng thư viện là qua git (lấy từ các tài liệu chính thức)

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 

Sau đó, bạn chỉ có thể làm

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");