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.
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/