dompdf falha ao carregar

Estou tentando obter dompdf em execução em um servidor interno. Com as configurações padrão de 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/classs/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/classs/font.cls.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/dompdf-master/dompdf_config.inc.php on line 335 

Quando desativar DOMPDF_ENABLE_AUTOLOAD , não consigo mais receber 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.

  • Vá para https://github.com/PhenX/php-font-lib e baixe a biblioteca.
  • Crie o dompdf/lib/php-font-lib/classs/ .
  • No arquivo zip, pegue o conteúdo da pasta src/FontLib/ e cole esse no seu diretório recém-criado.

Isso pareceu funcionar para mim.

Isso é uma questão temporária depois que o projeto DOMPDF se mudou para o Github. Veja as respostas a esta pergunta . A solução mais fácil para obter o pacote completo é baixar o DOMPDF 0.6 beta 3 do Google Code .

Vamos usar dompdf no codeigniter, MAS o arquivo que eu baixei do GitHub não possui todos os arquivos que precisamos. Falta todos os arquivos de php-font-lib. Então tivemos que baixá-lo e carregado para a respectiva pasta. Então, para ter dompdf trabalhando em codeigniter você pode ter que baixá-lo.

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

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

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

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á nenhuma pasta CLASSES que foi mencionada lá.

Eu tinha quase o mesmo problema. Meu código estava funcionando na minha máquina de dev. Local – uma checkbox do Windows – mas, em seguida, estava falhando no nosso servidor de produção – uma checkbox do Linux

O problema era que o diretório “classs” era minúsculo (\ app \ Vendor \ dompdf \ lib \ php-font-lib \ classs) que o Windows não se importava – mas o Linux era sensível a 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"); 

Por consistência, renomeiei o diretório com um “C” maiúsculo na checkbox do Windows.

A nova versão do dompdf não funciona com ‘composer install’ ou ‘composer update’. Ele precisa de versões especiais de bibliotecas de fonts que talvez nem sempre sejam as versões mais recentes, então isso pode mudar no futuro. Mas você pode encontrar como instalá-lo através da documentação da dompdf. Não sabe por que os autores não codificaram essas versões de fonts dentro do compositor.json, mas de qualquer maneira aqui é como fazê-lo.

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