Bom dia amigos.
Estou estudando a biblioteca TCPDF, e utilizo o scriptcase 8. Criei uma aplicação PDF Report e coloquei o código que se encontra neste link:
https://tcpdf.org/examples/example_001/
O código foi inserido na seção Layout PDF/código e na seção corpo. Quando vou executar a aplicação, o resultado é este: https://uploaddeimagens.com.br/imagens/captura_de_tela_de_2018-05-28_09-58-53-png.
O Cabeçalho do exemplo não aparece na visualização, agradeço muito pela ajuda.
Em Layout/código, além do corpo, tem as opções Definição, Cabeçalho e Rodapé. Creio que falta colocar os dados do cabeçalho a opção Cabeçalho.
Bom dia amigo, agradeço muito pela ajuda. Eu vi as outras opções: definições e layout. Inclui esta função em ambas e fiz o teste: $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.’ 001’, PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
mas também não retornou. Eu queria muito entender como funciona a impressão de cabeçalho e rodapé para que eu possa reproduzir em todas as páginas do relatório. no exemplo do site tcpdf.org, ele reproduz os exemplos em ambas as páginas, e notei que ele usa em seu código require_once(‘tcpdf_include.php’); e os metodos do $pdf para incluir a logo padrão e demais informações do metodo. No scriptcase ele da erro no metodo require_once.
Bem, deixa eu ver se entendi:
1 - Você está tentando usar o require_once dentro do report pdf? Se sim, não precisa;
2 - Você não colocou o SetHeaderData dentro da opção Cabeçalho? Somente em Definição e Layout? Se sim, não vai funcionar.
Deixa eu te dar um exemplo de como faço aqui:
Em Layout PDF / Código / Definição:
$_tmp = 'DOCUMENTO DE TROCA Nº '.{idtrocas};
$_tmp1= 'Data Emissão: '.{data_hora};
$cab_titulo = $this->SC_conv_utf8($_tmp);
$cab_titulox = $this->SC_conv_utf8($_tmp1);
Em Layout PDF / Código / Cabeçalho:
$this->SetLineWidth(0.3);
$this->SetFont('helvetica', 'B', 14);
$this->Pdf->SetFillColor(255, 255, 255); $this->Pdf->SetDrawColor(0, 0, 0);
$this->Cell(0, 15, $cab_titulo.' '.$cab_titulox, 0, 0, 'C',true); $this->Ln(16);
$this->Pdf->SetFillColor(255, 255, 255); $this->Pdf->SetDrawColor(0, 0, 0);
E funciona perfeitamente. Veja se isto te ajuda.
Bom dia Kleyber, mais uma vez agradeço pela ajuda. Eu irei fazer o teste conforme a sua última resposta.
Estou utilizando a biblioteca TCPDF mas desta vez via aplicação em branco PHP. Pois como estou testando os exemplos do site tcpdf.org, notei que algumas funções não funcionam corretamente. ex:
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
fiz um upload via ftp da biblioteca tcpdf.org e desde então os exemplos estão funcionando perfeitamente pelo comando PHP nativo.
Agora minha dúvida é: como consigo passar os parâmetros para a url diretamente da aplicação do scriptcase.
Segue o código no scriptcase:
metodo interno
function cabecalho($idcoligada)
{
$sql = "SELECT CNPJ, RAZAOSOCIAL, FANTASIA, ENDERECO,
NUMERO, COMPLEMENTO, BAIRRO, CEP, FONE,
CELULAR, EMAIL, SITE, LOGO,
CONCAT(
ENDERECO, ', ', CASE WHEN NUMERO IS NULL THEN 's/ nº' ELSE NUMERO END,
CASE WHEN COMPLEMENTO IS NULL THEN ''
WHEN Trim(COMPLEMENTO) = '' THEN ''
ELSE CONCAT(' - ', COMPLEMENTO) END,
CASE WHEN BAIRRO IS NULL THEN ''
WHEN Trim(BAIRRO) = '' THEN ''
ELSE CONCAT(' - ', BAIRRO) END
)
FROM A006_COLIGADA
WHERE ID = $idcoligada";
sc_lookup(Dados, $sql);
if(!empty({Dados}))
{
$cnpj = {Dados[0][0]};
$nome = {Dados[0][1]};
$endereco = {Dados[0][13]};
$imagem = base64_encode({Dados[0][12]});
echo "<div style='text-align:center; font-size:25px; font-weight:bold;'>RELATÓRIO DE PRODUTOS</div>
<div>
<table style='font-size: 12px;' width='100%' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td align='center' valign='top'>
<img src='data:image/png;base64,$imagem' height='41px' />
</td>
<td width='100%' valign='top'>
<div style='padding-left:20px;'>
<div style='font-weight:bold;'>$nome</div>
<div>CNPJ: $cnpj</div>
<div>$endereco</div>
</div>
</td>
</tr>
</table>
</div>
<div><hr></div>";
} else
{
};
};
function listafornecedor()
{
$sql = "SELECT ID, UPPER(NOME) AS FORNECEDOR
FROM C001_PESSOAS
WHERE TIPO = 2 AND ID IN (SELECT DISTINCT IDFORNECEDOR FROM E005_PRODUTOS WHERE ATIVO = 1)
ORDER BY NOME";
sc_lookup(Ds, $sql);
if(!empty({Ds}))
{
$id = {Ds[0][0]};
$nome = {Ds[0][1]};
echo "<div class='grupo'>$nome</div>
<div style='padding-left:50px;'>
<table width='100%' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td class='celula Titem'>ITEM</td>
<td class='celula Tcodigo'>CÓDIGO</td>
<td class='celula Tnome'>NOME</td>
<td class='celula Tvalor'>VALOR R$</td>
</tr>";
$item = 1;
foreach({Ds} as $_ds)
{
listaprodutos($_ds[0], $item++);
};
echo "</table>
</div>";
} else
{
echo "<div>Nenhum registro encontrado.</div>";
};
};
function listaprodutos($idfornecedor, $item)
{
$sql = "SELECT ID, CODIGO, NOMEDOPRODUTO, IMAGEM,
COMISSAO, FRETE, UND, MARCA, COR,
CATEGORIA, SUBCATEGORIA, FORNECEDOR,PRECOVENDA
FROM V_PRODUTOS
WHERE IDFORNECEDOR = $idfornecedor
ORDER BY NOMEDOPRODUTO";
sc_lookup(Ds, $sql);
$i = 0;
if(!empty({Ds}))
{
//foreach({Ds} as $_ds)
//{
$i++;
$id = {Ds[0][0]};
$codigo = {Ds[0][1]};
$nomeproduto = {Ds[0][2]};
$imagem = base64_encode({Ds[0][4]});
$comissao = {Ds[0][4]};
$frete = {Ds[0][5]};
$und = {Ds[0][6]};
$marca = {Ds[0][7]};
$cor = {Ds[0][8]};
$categoria = {Ds[0][9]};
$subcategoria = {Ds[0][10]};
$fornecedor = {Ds[0][11]};
$precovenda = {Ds[0][12]};
echo "<tr>
<td class='celula Litem'>".str_pad($item, 5, '0', STR_PAD_LEFT)."</td>
<td class='celula Lcodigo'>$codigo</td>
<td class='celula Lnome'>$nomeproduto</td>
<td class='celula Lvalor'>R$ ".number_format($precovenda,2,",",".")."</td>
</tr>";
//};
};
};
onExecute
$cabecalho = cabecalho([vlColigada]);
$rodape = "";
$conteudo = listafornecedor();
echo "<a href='http://relatorio-hildericopereira736888.codeanyapp.com/tcpdf/examples/relatorio.php?cabecalho=$cabecalho&rodape=$rodape&Conteudo=$conteudo'> Visualizar em PDF </a>";
Codigo do relatório TCPDF:
// create new PDF document
$pdf = new YOURPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Testando 123');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, "CNPJ: 10.770.777/0001-90", "Rua menino Jesus de Praga\n www.google.com", array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));
// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
// set some language-dependent strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
require_once(dirname(__FILE__).'/lang/eng.php');
$pdf->setLanguageArray($l);
}
// ---------------------------------------------------------
// set default font subsetting mode
$pdf->setFontSubsetting(true);
// Set font
// dejavusans is a UTF-8 Unicode font, if you only need to
// print standard ASCII chars, you can use core fonts like
// helvetica or times to reduce file size.
$pdf->SetFont('dejavusans', '', 14, '', true);
// Add a page
// This method has several options, check the source code documentation for more information.
$pdf->AddPage();
// set text shadow effect
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
// Set some content to print
/*
$html = <<<EOD
<h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;background-color:#CC0000;color:black;"> <span style="color:black;">TC</span><span style="color:white;">PDF</span> </a>!</h1>
<i>This is the first example of TCPDF library.</i>
<p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
<p>Please check the source code documentation and other examples for further information.</p>
<p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
EOD;
*/
//$cabecalho = "cabeçalho";
//$rodape = "rodapé";
//$conteudo = "Conteudo";
$cabecalho = htmlspecialchars($_GET["cabecalho"]);
$rodape = htmlspecialchars($_GET["rodape"]);
$conteudo = htmlspecialchars($_GET["Conteudo"]);
$html = <<<EOD
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>RELATÓRIO DE PEDIDO</title>
<style type='text/css'>
#thead_0 { display: table-header-group; }
#thead { page-break-before: always; }
#tbody { display: table-row-group; }
#tfoot { display: table-footer-group; }
body {
padding:0px 20px 0px 20px;
font-family:Arial, sans-serif;
font-size:11px;
font-style:color-burn;
}
.conteiner {
border:1px solid gray;
-webkit-border-radius: 8px;
border-radius: 8px;
padding:10px;
margin-bottom:10px;
page-break-inside: inherit;
}
.conteiner:hover{
background-color:#FFFF99;
}
@media screen {
div.topo, div.rodape {
display: none;
}
}
@media print {
div.topo {
position: fixed;
top: 0;
}
div.rodape {
position: fixed;
bottom: 0;
}
}
.grupo
{
font-size:14px;
font-weight: bold;
text-align:justify;
padding:5px;
background-color:#003366;
color:#fff;
margin-bottom:10px;
}
.celula
{
font-family: Arial, 'Times New Roman';
font-size: 12px;
}
.celula.Titem
{
font-weight: bold;
text-align:center;
padding:3px;
background-color:#003366;
color:#fff;
width:5%;
vertical-align:middle;
}
.celula.Litem
{
text-align:center;
padding:3px;
width:5%;
vertical-align:top;
border-bottom:1px #000 solid;
}
.celula.Tcodigo
{
font-weight: bold;
text-align:center;
padding:3px;
background-color:#003366;
color:#fff;
width:10%;
vertical-align:middle;
}
.celula.Lcodigo
{
text-align:center;
padding:3px;
width:10%;
vertical-align:top;
border-bottom:1px #000 solid;
}
.celula.Tnome
{
font-weight: bold;
text-align:center;
padding:3px;
background-color:#003366;
color:#fff;
width:75%;
vertical-align:middle;
}
.celula.Lnome
{
text-align:left;
padding:3px;
width:75%;
vertical-align:top;
border-bottom:1px #000 solid;
}
.celula.Tvalor
{
font-weight: bold;
text-align:center;
padding:3px;
background-color:#003366;
color:#fff;
width:10%;
vertical-align:middle;
}
.celula.Lvalor
{
text-align:right;
padding:3px;
width:10%;
vertical-align:top;
border-bottom:1px #000 solid;
}
</style>
</head>
<body style='padding:20px;'>
<!-- <div id='thead'>$cabecalho</div> -->
<div class='topo'>$cabecalho</div>
<div id='tfoot'>$rodape</div>
<div id='tbody'>$conteudo</div>
</BODY>
</html>
EOD;
// Print text using writeHTMLCell()
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
// ---------------------------------------------------------
// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$pdf->Output('example_001.pdf', 'I');
//============================================================+
// END OF FILE
//============================================================+
Ola Xboxslim,
Quando eu estava começando a minha jornada no ReportPDF eu aprendi muito com esse video do Mestre Haroldo:
https://www.youtube.com/watch?v=aKpkZmsKwis
Recentemente, consultei ele novamente para resolver um ticket. Sugiro dar uma olhada
Bom dia. Vou ver o vídeo. eu estava fazendo tudo por php, cheguei neste ponto conforme a imagem: