ti-enxame.com

dompdf não consegue carregar

Estou tentando fazer o dompdf rodar em um servidor interno. Com as configurações padrão config.inc.php, recebo o seguinte ao executar o equivalente ao script de demonstração '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 

Quando eu desligo DOMPDF_ENABLE_AUTOLOAD, não recebo mais esse aviso, mas o código falha com o seguinte:

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

O seguinte é o código:

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

Este é o Ubuntu 12.04, atualizado em patches, com configurações padrão do Apache.

Muito obrigado.

28
Mark T. Johns
  • Vá para https://github.com/PhenX/php-font-lib e faça o download da biblioteca.
  • Crie o diretório dompdf/lib/php-font-lib/classes/.
  • No arquivo Zip, pegue o conteúdo da pasta src/FontLib/ e cole no diretório recém-criado.

Isso pareceu funcionar para mim.

74
Mikepote

Este é um problema temporário depois que o projeto DOMPDF foi movido para o Github. Veja as respostas para this question . A solução mais fácil para obter o pacote completo é baixar DOMPDF 0.6 beta 3 do Google Code .

4
Jpsy

Nós usaremos dompdf no codeigniter, mas o arquivo que baixei do GitHub não tem todos os arquivos que precisamos. Está faltando todos os arquivos do php-font-lib. Então tivemos que baixá-lo e enviá-lo para a respectiva pasta. Então, para ter o dompdf trabalhando no codeigniter você pode ter que baixá-lo.

Veja aqui http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/

2
Valko Valkov

Eu tive quase o mesmo problema. Meu código estava trabalhando na minha máquina dev local - uma caixa do Windows - mas depois estava falhando em nosso servidor de produção - uma caixa Linux

O problema era que o diretório "classes" era minúsculo (\ app\Vendor\dompdf\lib\php-font-lib\classes) que o Windows não se importava - mas o Linux fazia distinção entre maiúsculas e minúsculas!

Simplesmente editando a seguinte linha em dompdf_config.inc.php resolveu o problema:

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

Para consistência, renomeiei o diretório com um "C" maiúsculo na caixa do Windows.

0
foxbeefly

A nova versão do dompdf não funciona com 'composer install' ou 'composer update'. Ele precisa de versões especiais de bibliotecas de fontes que nem sempre são as versões mais recentes, portanto isso pode mudar no futuro. Mas você pode encontrar como instalá-lo através da documentação do dompdf. Não sei porque os autores não codificaram essas versões de fontes dentro do composer.json, mas de qualquer forma aqui está como fazer isso.

Atualmente, a maneira mais fácil e melhor de usar a biblioteca é via git (tirada dos documentos oficiais)

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

Então você pode apenas fazer

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

Se o erro não for corrigido depois de fazer o que outras respostas sugerem:

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

Não há pasta CLASSES que foi mencionada lá.

0
cMinor

Se você está usando o composer para instalar o dompdf, você precisa colocar define("DOMPDF_ENABLE_AUTOLOAD", false); em dompdf_config.custom.inc.php. Isso permitirá que o compositor carregue automaticamente o php-font-lib como ele já está instalado. (Veja esta edição: https://github.com/dompdf/dompdf/issues/636 )

Se você não estiver usando o compositor, veja a resposta do Mikepote.

0
Loren