Biblioteca MPDF "falha ao carregar documento PDF"

Bom dia pessoal.
Estou testando a biblioteca MPDF com SC.
Fiz a importação através das bibliotecas externas fiz as chamadas.
Localmente em ambiente windows 7 tudo ok.
Ao publicar a app “falha ao carregar documento PDF”.

Grande Celso,

Isso tá parecendo permissão na pasta não?

Exatamente amigo Kleyber.
Como faço essas permissões e na onde?

Tem que ser na pasta onde está a biblioteca externa.

Sim tem mais que permissões devo deixar?
Atualmente está com permissão nas pastas 0755 e nos arquivos 0644 exceto na temo que está com 0777.

Checa o caminho no qual o arquivo é gerado.
( Dependendo da forma o qual foi configurado no windows não funcionará no linux )

Caro Ronyan.
Subi a biblioteca conforme SC manda, utilizando bibliotecas externas.
Referenciando ela assim:
sc_include_library(“sys”, “nome_biblioteca”, “mpdf.php”, true, true);
O arquivo é gerado automaticamente, não defini nada sobre isso.

Celso, o erro deve ser no HTML, tente um código simples.

Estou compartilhando um exemplo que tenho. A classe é muito simples de ser usada veja no exemplo.


$html='

<style>
table, th, td {
    border: 1px solid black;
    border-collapse: collapse;
}
th, td {
    padding: 5px;
}
</style>


<table style="width:100%">	
	<tr>
		<th>
			RESUMO DOS CUSTOS
		</th>
		<th>
			RESUMO DOS CUSTOS
		</th>
		<th>
			RESUMO DOS CUSTOS
		</th>
	</tr>
	
	<tr>
		<td>
			<img src="../_lib/img/GRAFICOS/grafico1.jpg'.'" width="30%" height"30%">
		</td>
		<td>
			<img src="../_lib/img/GRAFICOS/grafico1.jpg'.'" width="30%" height"30%">
		</td>
		<td>
			<img src="../_lib/img/GRAFICOS/grafico1.jpg'.'" width="30%" height"30%">
		</td>
	</tr>
</table>

<table style="width:100%">
	<tr>
		<th>'
			.utf8_encode('CUSTOS POR TIPO DE MANUTENÇÃO').
		'</th>
	</tr>

	<tr>
		<td>
			<img src="../_lib/img/GRAFICOS/grafico1.jpg'.'" width="100%" height"">
		</td>
	</tr>

	<tr>
		<th>'
			.utf8_encode('CUSTOS POR SETOR EXECUTANTE MANUTENÇÃO').
		'</th>
	</tr>
	<tr>
		<td>
			<img src="../_lib/img/GRAFICOS/grafico1.jpg'.'" width="100%" height"">
		</td>
	</tr>
	
	<tr>
		<th>'
			.utf8_encode('CUSTOS POR ITENS (HORAS / MATERIAIS / DIVERSOS)').
		'</th>
	</tr>
	<tr>
		<td>
			<img src="../_lib/img/GRAFICOS/grafico1.jpg'.'" width="100%" height"">
		</td>
	</tr>
</table>
	

';

include("../_lib/report/mpdf60/mpdf.php");
$mpdf=new mPDF('', 'A4'); 
$mpdf->AddPage('P');
$mpdf->WriteHTML($html);
$mpdf->Output();

exit;

Localmente funciona 100%.
Ao subir para server não funciona.
Será que é o HTML?

Vou testar.

Após muito sangue derramado e noite sem dormir, com o cliente esperando esse relatório tão sem sal e sem tempero.
Descobri que o SC está de certa forma impedindo a execução do código.
Peguei o meu Html gerado puro e criei um arquivo index.php e entre da minha hospedagem na pasta de onde a app blank deveria funcionar e sobrescrevi o index.php por esse e fiz a chamada pelo menu do SC e funcionou.
Agora resta saber como resolver isso que em tese a blank é justamente para que nós coloquemos nossos nossos códigos personalizados que o SC rodaria isso normalmente.
O que me ferra de vez é que localmente como dito anteriormente roda 100%.
O teste obviamente foi feito com a biblioteca MPDF dendo da pasta _lib do meu projeto.

Para ativar a lib externa, cria uma blank de teste mais simples, e usa esses, códigos, e tira copia pra gente print screen como definiu a lib externa as pastas dentro dela,
e como publicou, as vezes pulou alguma etapa.

Blank de testes:

// OPÇÃO 1 CHAMADA SC
/*
Como Inserir uma Lib:
Bibliotecas Externas Públicas (Ativar): HTMLtoPDF,
que contém a Lib: mpdf60/mpdf.php
*/
sc_include_library(‘sys’, ‘HTMLtoPDF’, ‘mpdf60/mpdf.php’, true, true);

// OPÇÃO 1 CHAMADA DIRETA PHP
// include("…/_lib/mpdf60/mpdf.php");

// OPÇÃO 2 CHAMADA DIRETA PHP Metódo antigo.
// require_once("…/_lib/mpdf60/mpdf.php");

$html=‘

Hello World!

’;

$mpdf=new mPDF(’’, ‘A4’);
$mpdf->AddPage(‘P’);
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;

Fiz a opção 2

E coloca no inicio do código:
$filename = ‘…/_lib/mpdf60/mpdf.php’;

if (file_exists($filename)) {
echo “Eu consegui carregar a LIB $filename existe”;
} else {
echo “A LIB $filename não existe”;
}

Altera o:
$mpdf->Output();

Para:
$mpdf->Output(‘arquivo.pdf’,‘D’); // Cria PDF usando ‘D’ para forçar o download;

Testa no seu PC e depois na hospedagem.

Olha, é alguma configuração na tua hospedagem ou modo como foram enviados os arquivos. ( A única diferença foi que utilizei uma biblioteca de projeto e não de sistema ). ( Aplicação desenvolvida no SC 8.1 em um Windows Server 2012 ).
Testei com o código abaixo:

$html=‘

Hello World!

’;

$mpdf=new mPDF(’’, ‘A4’);
$mpdf->AddPage(‘P’);
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;

Em um servidor debian e um servidor centos e não deu problemas.

Local Debian:
Web CentOS:

Bom dia,

Após analisar o código identificamos que o problema se encontra na linha abaixo:
.tg .tg-baqh{text-align:center;vertical-align:button}

Ao alterar para a linha abaixo passou a funcionar.
.tg .tg-baqh{text-align:center;vertical-align:bottom}

Ótimo dia a todos.

Artur Oliveira
Equipe Netmake

Os novos ‘programadores’ deveriam aprender esta matéria:
http://www.scriptcase.com.br/blog/o-que-e-debug/

mas a final o problema era de quem?
SC ou Programador?

Acho que minha resposta acima não ficou tão clara para todos.
O senhor Celso enviou o código que ele está utilizando na blank para o email bugs@netmake.com.br.
a linha que falei acima está no código que ele enviou, ao fazer a alteração passou a funcionar.


Artur Oliveira
Equipe Netmake

Boa tarde Sr. Artur.
Realmente existe e erro.
Porém não é a causa da não execução do script.
Fiz uma atualização no meu Centos 6.8 juntamente com a equipe do Cpanel.
Visto que o script passou a executar em alguns navegadores com a blank e meu script puro feio em php já rodava em qualquer navegador.
Para mostrar o que estou falando publiquei em dois links o sistema com o erro referido.
Fiz os teste arrumando o erro apontado e o comportamento continuou o mesmo.

Versão sem erro “.tg .tg-baqh{text-align:center;vertical-align:bottom}”
Php Puro:
http://bycelso.com.br/mpdf/index2.php/

Passando pela blank do SC:
http://bycelso.com.br/mpdf/

Versão com erro “.tg .tg-baqh{text-align:center;vertical-align:button}”
Php Puro:
http://bycelso.com.br/mpdf2/index2.php/

Passando pela blank do SC:
http://bycelso.com.br/mpdf2/