Olá Saulo,
No momento estou tentando utilizar umas bibliotecas externas para gerar o pdf apartir do html. Veja que no final tem o código comentado das mesmas.
Segue código:
//Parametros passados pelas telas ctrl_imprime_boleto_venda e nf_saida
//Formatacao das datas: inicial e final
if ([p6] == “F”) {
[p2] = sc_date_conv([p2],“aaaammdd”,“dd/mm/aaaa”);
[p3] = sc_date_conv([p3],“aaaammdd”,“dd/mm/aaaa”);
} else {
[p4] = “(”.[p4].")";
}
//Montagem da clausula WHERE
$var_where = " id_forma_pagamento = 3 AND nsp.id NOT IN (SELECT id_nf_saida_parcela FROM recebimento) AND (bol.impresso = ‘[p5]’ OR ‘[p5]’ = ‘T’)";
if (!empty([p1])) {
$var_where .= " AND cli.codigo = ‘[p1]’";
}
if (!empty([p2])) {
$var_where .= " AND nfs.data_venda between ‘[p2]’ AND ‘[p3]’";
}
if (!empty([p4])) {
$var_where .= " AND cli.id IN [p4]";
}
if (!empty([p8])) {
$var_where .= " AND cli.cnpj = ‘[p8]’";
}
/Inicio Lookups: para obtencao de dados para preenchimento do boleto/
sc_lookup(rs, “SELECT distinct cli.razao_social, cli.logradouro, cli.cidade, cli.uf, cli.cep,
nfs.numero_nf, nsp.parcela, nsp.data_vencimento, bol.valor,
cli.nome_fantasia, cli.codigo, nfs.id, cli.cnpj, cli.bairro, bol.nosso_numero,
bol.gerado_data, nfs.valor_total
FROM boleto bol
INNER JOIN nf_saida_parcela nsp ON nsp.id = bol.id_nf_saida_parcela
INNER JOIN nf_saida nfs ON nfs.id = nsp.id_nf_saida
INNER JOIN nf_saida_item nfsi ON nfsi.id_nf_saida = nfs.id
INNER JOIN cliente cli ON cli.id = nfs.id_cliente
WHERE “. $var_where .” ORDER BY nsp.parcela”);
sc_lookup(cedente, “SELECT ced.nosso_numero, ced.agencia, ced.agencia_digito,
ced.conta, ced.conta_digito, ced.carteira, ced.id, ced.nome,
bco.codigo, ced.convenio
FROM cedente as ced
INNER JOIN banco bco ON ced.id_banco = bco.id”);
sc_lookup(carta, “SELECT conteudo, id FROM modelo_carta”);
/Fim Lookups/
if (isset($rs) && !empty($rs)) {/Verifico se esta setado array vindo do lookup rs/
//Contagem de parcelas
sc_lookup(count_parc, “SELECT count(*) FROM nf_saida_parcela nsp
INNER JOIN nf_saida nfs ON nfs.id = nsp.id_nf_saida
INNER JOIN cliente cli ON cli.id = nfs.id_cliente
WHERE nfs.id = “. $rs[0][11].””);
//Verifica o num.de registros, recebe cast para inteiro e armazena na count_reg.
$count_reg = (int)count($rs);
//Rodrigo: SQL para busca de produtos do item da PRIMEIRA NF
sc_lookup(pdt, "SELECT prod.nome, nfi.quantidade,
nfi.valor_unitario, nfi.valor_total FROM produto prod
INNER JOIN nf_saida_item nfi ON nfi.id_produto = prod.id
WHERE nfi.id_nf_saida = ". $rs[0][11] ." ORDER BY prod.nome");
//Recebe id da NF_SAIDA.
$id_nfSaida = $rs[0][11];
for ($i = 0; $i < $count_reg; $i++) { //Realiza repeticao até o ultimo registro encontrado.
// DADOS DO BOLETO PARA O SEU CLIENTE
$dias_de_prazo_para_pagamento = 10;
$data_venc = sc_date_conv($rs[$i][7],"aaaa-mm-dd", "dd/mm/aaaa");// Prazo de X dias OU informe data: "13/04/2006";
$valor_cobrado = $rs[$i][8]; // Valor - REGRA: Sem pontos na milhar e tanto faz com "." ou "," ou com 1 ou 2 ou sem casa decimal
$valor_boleto= number_format($valor_cobrado, 2, ',', '');
$dadosboleto["nosso_numero"] = $rs[$i][14]; //Conforme instruções do cliente
$dadosboleto["numero_documento"] = $rs[$i][5];// Num do pedido ou do contrato
$dadosboleto["data_vencimento"] = $data_venc; // Data de Vencimento do Boleto - REGRA: Formato DD/MM/AAAA
$dadosboleto["data_documento"] = date("d/m/Y"); // Data de emissão do Boleto
$dadosboleto["data_processamento"] = sc_date_conv($rs[$i][15],"aaaa-mm-dd", "dd/mm/aaaa"); // Data de processamento do boleto (opcional)
$dadosboleto["valor_boleto"] = $valor_boleto; // Valor do Boleto - REGRA: Com vírgula e sempre com duas casas depois da virgula
$dadosboleto["carta"] = $carta[0][0];
//Alterar o texto da carta colocando o vencimento e numero da parcela dinamicamente
$modelo_carta = str_replace('|vencimento|', $data_venc, $carta[0][0]);
$modelo_carta = str_replace('|parcela_inicio|', $rs[$i][6], $modelo_carta);
$modelo_carta = str_replace('|parcela_fim|', $count_parc[0][0], $modelo_carta);
$dadosboleto["carta"] = $modelo_carta;
// DADOS DO SEU CLIENTE
$dadosboleto["sacado"] = $rs[$i][0];
$dadosboleto["sacado_cnpj"] = $rs[$i][12];
$dadosboleto["endereco1"] = $rs[$i][1] . " - " . $rs[$i][13];
$dadosboleto["endereco2"] = $rs[$i][2] ." - ". $rs[$i][3] ." - ". $rs[$i][4];
$dadosboleto["fantasia"] = $rs[$i][9];
$dadosboleto["codcliente"] = $rs[$i][10];
//PARCELA
$dadosboleto["parcela"] = $rs[$i][6];
//Verifica se houve mudanca de id da NF_SAIDA
if($id_nfSaida != $rs[$i][11] ){
//Atribui o id da nova NF_SAIDA
$id_nfSaida = $rs[$i][11];
//Recontagem de parcelas
sc_lookup(count_parc, "SELECT count(*) FROM nf_saida_parcela nsp
INNER JOIN nf_saida nfs ON nfs.id = nsp.id_nf_saida
INNER JOIN cliente cli ON cli.id = nfs.id_cliente
WHERE cli.id_tipo_cliente = 2 and nfs.id = $id_nfSaida ");
//Rodrigo: SQL para busca de produtos APOS A PRIMEIRA NF (Se houver)
sc_lookup(pdt, "SELECT prod.nome, nfi.quantidade,
nfi.valor_unitario, nfi.valor_total FROM produto prod
INNER JOIN nf_saida_item nfi ON nfi.id_produto = prod.id
WHERE nfi.id_nf_saida = $id_nfSaida ORDER BY prod.nome");
}
// INFORMACOES PARA O CLIENTE
$dadosboleto["instrucoes1"] = "- ESTE BOLETO REFERE-SE A CAMPANHA LIQUIDA SALVADOR 2013";
$dadosboleto["instrucoes2"] = "- NÃO RECEBER ESTE BOLETO COM 10 DIAS DE VENCIDO";
$dadosboleto["instrucoes3"] = "- NÃO RECEBER ESTE BOLETO COM DESCONTO";
$dadosboleto["instrucoes4"] = "- Em caso de dúvidas entre em contato conosco: financeiro@cdl.com.br";
$dadosboleto["instrucoes5"] = "  Parcela " . $dadosboleto["parcela"] . " de " . $count_parc[0][0];
// DADOS OPCIONAIS DE ACORDO COM O BANCO OU CLIENTE
$dadosboleto["quantidade"] = "001";
$dadosboleto["valor_unitario"] = $valor_boleto;
$dadosboleto["aceite"] = "";
$dadosboleto["especie"] = "R$";
$dadosboleto["especie_doc"] = "DS";
// ---------------------- DADOS FIXOS DE CONFIGURAÇÃO DO SEU BOLETO --------------- //
// DADOS DA SUA CONTA - Bradesco
$dadosboleto["agencia"] = $cedente[0][1]; // Num da agencia, sem digito
$dadosboleto["agencia_dv"] = $cedente[0][2]; // Digito do Num da agencia
$dadosboleto["conta"] = $cedente[0][3]; // Num da conta, sem digito
$dadosboleto["conta_dv"] = $cedente[0][4]; // Digito do Num da conta
// DADOS PERSONALIZADOS - Bradesco
$dadosboleto["conta_cedente"] = $cedente[0][3];; // ContaCedente do Cliente, sem digito (Somente Números)
$dadosboleto["conta_cedente_dv"] = $cedente[0][4]; // Digito da ContaCedente do Cliente
$dadosboleto["carteira"] = $cedente[0][5]; // Código da Carteira: pode ser 06 ou 03
$dadosboleto["banco"] = $cedente[0][8]; // Codigo do banco
$dadosboleto["convenio"] = $cedente[0][9]; //Convenio do cedente
// SEUS DADOS
$dadosboleto["identificacao"] = "CDL - Boleto de cobrança bancária";
$dadosboleto["cpf_cnpj"] = "15.178.692/0001-30";
$dadosboleto["endereco"] = "Rua Carlos Gomes, 1063 - Aflitos";
$dadosboleto["cidade_uf"] = "Salvador / Bahia";
$dadosboleto["cedente"] = $cedente[0][7];
//Rodrigo: LISTAR PRODUTOS DA NF
$tab_produtos = '';
$dadosboleto["kitnome"] = '';
for($x = 0; $x < count($pdt); $x++){
//Verifica se o produto eh kit e adciona o nome do kit sem discriminacao de
//socio ou nao socio para uso no layout_bradesco_prevenda.php (include).
if(strtoupper(substr($pdt[$x][0], 0, 3)) == "KIT"){
//Verifica se o kit tem o separador (-) de NO/PP '-' socio/nao socio
if(!strrpos($pdt[$x][0], "-")){
$dadosboleto["kitnome"] .= $pdt[$x][1] . " - " .
$pdt[$x][0] . "; ";
}else{
$dadosboleto["kitnome"] .= $pdt[$x][1] . " - " .
substr($pdt[$x][0] , 0, strrpos($pdt[$x][0], "-")) . "; ";
}
}
//Montagem dinamica das linhas e celulas da tabela de produtos no boleto
//iniciada no layout_bradesco_venda.php (include).
$tab_produtos .= "<tr>
<td class='cp' align='left'>
" . $pdt[$x][0] ."
</td>
<td class='cp' align='right'>
" . $pdt[$x][1] ."
</td>
<td class='cp' align='right'>
" . number_format($pdt[$x][2] , 2 , ',' , '.') . "
</td>
<td class='cp' align='right'>
" . number_format($pdt[$x][3] , 2 , ',' , '.') ."
</td>
</tr>";
}
//Rodrigo: Montagem estatica das informacoes de parcelas, total parcela e total venda.
$tab_produtos .= "<tr>
<td colspan='4' style='border-bottom:1px solid; border-bottom-color:#000000'>
</td>
</tr>
<tr>
<td class='cp' align='left'>
PARCELA " . $rs[$i][6] . " DE " . $count_parc[0][0] . "
</td>
<td class='cp' align='right'>
VALOR DESTA PARCELA R$ " . number_format($valor_cobrado , 2 , ',' , '.') . "
</td>
<td colspan='2' class='cp' align='right'>
TOTAL DA VENDA R$ " . number_format($rs[0][16], 2, ',' , '.') . "
</td>
</tr>
";
$dadosboleto["produtos"] = $tab_produtos;
//inicia o buffer
//ob_start();
// NÃO ALTERAR!
include_once("include/funcoes_bradesco.php");
//gera_boleto(&$dadosboleto);
$dadosboleto = gera_boleto_2($dadosboleto);
//O Teste abaixo verifica o parametro P7 quanto a tipo de boleto (P=prevenda / V=venda) que deve ser impresso.
if([p7] == "P"){
include("include/layout_bradesco_prevenda.php");
}else{
include("include/layout_bradesco_venda.php");
}
include("include/layout_correio.php");
//$htmlBoleto = ob_get_clean();
//Criando um novo arquivo
//file_put_contents("boleto.htm", $htmlBoleto);
//require_once('..\..\..\..\dompdf\dompdf_config.inc.php');
//$html = file_get_contents("boleto.htm");
//$dompdf = new DOMPDF();
//$boletoPdf = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');
//$dompdf->load_html($boletoPdf);
//$dompdf->set_paper("A4", "portrait");
//$dompdf->render();
//$dompdf->stream('boleto.pdf');
//C:\Arquivos de programas\netmake\v6\wwwroot\
//require_once('..\..\..\..\html2pdf\html2pdf.class.php');
//$html = file_get_contents("boleto.htm");
//$html2pdf = new HTML2PDF('P','A4','fr');
//$html2pdf->WriteHTML($html);
//$html2pdf->Output('boleto.pdf');
//exit;
//Flegar o boleto como IMPRESSO
$sql = "UPDATE boleto SET impresso = 'S' WHERE nosso_numero = '".$rs[$i][14]."'";
sc_exec_sql($sql);
}
} else {
sc_alert(“Estes boletos jah foram impressos ou nao existem”);
}