Vou apresentar uma explicação simples para um erro chato no wkhtmltopdf, que realiza a conversão de HTML para PDF em PHP.
É um programa muito bom.
Alguns dos erros aprensetados podem ser esses: Failed without error message: wkhtmltopdf "h
Esse erro é apresentado pelo próprio Script do wkhtmltopdf
Ao ativar essa Option é apresentado o erro correto do prompt
$pdf = new Pdf(['commandOptions' => ['useExec' => true]]);
$pdf->addPage('teste_pdf.html');
Erro após option: 'wkhtmltopdf' não é reconhecido como um comando interno ou externo, um programa operável ou um arquivo em lotes.
Faça o teste no seu CMD tentando executar somente o comando "wkhtmltopdf", se apresentar o mesmo erro, adicione o bin dele nas suas Variáveis de Ambiente do SO.
Blz, você já adicionou o comando no Path e ainda está apresentando o erro. Sei isso é muito chato.
Informe a classe Pdf onde está localizado o binário, verifique o exemplo abaixo.
$pdf = new Pdf('teste_pdf.html');
$binary = 'C:/wkhtmltopdf/bin/wkhtmltopdf.exe'; //definindo o caminho do binário
$pdf->binary = $binary; //setando o binário
Ok, agora sua classe está encontrando o binário, mas ainda apresenta o erro "Code 1", apenas continue lendo.
O que eu fiz para consertar é debugar a Classe que gera o PDF, mas especificamente a Classe "Command.php" que fica dentro de "vendor\mikehaertl\php-shellcommand\src" se você estiver usando Composer.
No método "public function execute()" mas especificamente na linha 373 é gerado o comando de execução, eu mandei exibir o comando e executei no CMD, o PDF foi criado certinho que meu olho até brilhou.
O Problema é que esse erro de code 1 é gerado para qualquer URL que não foi carregada corretamente, então se você tiver uma Fonte/Js/Css o qualquer URL de META que não foi carregado é apresentado esse erro, e como o programa "wkhtmltopdf" trata qualquer erro como erro potencial ele não gera o PDF, então alterei a classe "Command.php", na linha de validação adicionei o "code 1" como válido ficando assim
if ($this->_exitCode !== 0 && $this->_exitCode !== 1) {
Pode ser essa a forma correta de consertar o erro, talvez não, mas eu fiz isso e fiquei feliz e nível de stress baixou. Se você procura a felicidade essa é uma cura.
Usei a classe que está no GIT https://github.com/mikehaertl/phpwkhtmltopdf
No composer você pode usar a chamada: "mikehaertl/phpwkhtmltopdf": "*"
Abraço.
Nenhum comentário:
Postar um comentário