PI S4 DSW III DouglasARS: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Douglas
imported>Douglas
Linha 116: Linha 116:
[...]
[...]
</pre>
</pre>
Para funcionar é basta o DOM abrir a página HTML em questão e converter a mesma para um documento PDF:
;exemplo.php
<pre>
<?php
/* Preparação do conteúdo
* (costumo ter uma função a realizar esta tarefa)
*/
$html = '
<p>O meu HTML como quero ver no navegador!</p>
<p>Já formatado e com CSS.</p>';
/* Preparação do documento final
*/
$documentTemplate = '
<!doctype html>
<html>
    <head>
        <link rel="stylesheet" media="screen" href="http://www.site.com/css/style.css" type="text/css">
    </head>
    <body>
        <div id="wrapper">
            '.$html.'
        </div>
    </body>
</html>';
// inclusão da biblioteca
require_once("dompdf/dompdf_config.inc.php");
// alguns ajustes devido a variações de servidor para servidor
if ( get_magic_quotes_gpc() )
    $documentTemplate = stripslashes($documentTemplate);
// abertura de novo documento
$dompdf = new DOMPDF();
// carregar o HTML
$dompdf->load_html($documentTemplate);
// dados do documento destino
$dompdf->set_paper("A4", "portrail");
// gerar documento destino
$dompdf->render();
// enviar documento destino para download
$dompdf->stream("dompdf_out.pdf");
exit(0);
?>
</pre>
Existem muitos exemplos a partir da página: http://pxd.me/dompdf/www/examples.php


=Digitando dados numa lista=
=Digitando dados numa lista=

Edição das 16h05min de 19 de maio de 2016

Apresentação

Olá Aluno,

Nestas duas últimas semanas, mostramos como por nossa aplicação na web. Agora sua aplicação será visível para qualquer pessoa em qualquer lugar do mundo, desde que tenha acesso à internet e um navegador. Lembrando que isto pode ser com qualquer sistema operacional em qualquer computador, tablet ou smartphone. Mostramos como criar um domínio, como criar e acessar o banco de dados na web e enviar os nossos arquivos e pastas de código fonte para esse local na internet, utilizando um programa de FTP. Nesta quarta semana, vamos dar uma atenção para nossa aplicação, vamos propor melhorias e novas implementações no código PHP, como digitar listas e gravar no banco de dados, como fazer operações com datas e como gerar relatórios PDF a partir das páginas HTML.

Bom trabalho!

Fiquem atentos as postagens no Fórum e participem dos nossos encontros virtuais.

Prof. Douglas A.

Objetivos

  • Operações com data.
  • Gerando PDF a partir de um HTML com o PHP.
  • Entrando com dados numa lista.

Operações com data

Dentre todas as simplificações possíveis, a que mais costuma deixar o programador feliz é a função strtotime(). Pra quem já está acostumado, parece que não parece nada de mais, mas pra quem ainda faz cálculos com data multiplicando por 365,25 ou somando 30 ou qualquer outra combinação esdruxula, aqui vai alguns exemplos de uso da função strtotime():

Função
srttotime()
<?php
    echo '<P>Ontem: ', strftime('%A', strtotime('yesterday'));// Ontem: Wednesday

    echo '<P>Amanhã: ', strftime('%A', strtotime('tomorrow'));// Amanhã: Friday
     
    echo '<P>Próxima segunda: ', strftime('%d de %B de %Y', strtotime('next monday')); // Próxima segunda: 23 de May de 2016
     
    echo '<P>Vencimento daqui a 3 meses: ', strftime('%d/%m/%Y', strtotime('+3 months')); // Vencimento: 19/08/2016
?>


Infelizmente a função strftime() retorna os nomes dos dias da semana e meses em inglês, mas é muito útil em se tratando de datas passadas ou futuras como, por exemplo, dividir um valor e lançar os próximos vencimentos mensais.

Função
date()

A função date() recebe apenas um parâmetro: o formato de data. Por padrão, sempre será mostrada a data do momento atual da execução, como mostra o código a seguir:

<?php
    echo '<p> Hoje: ', date("d/m/Y");     // 19/05/2016
?>


Função time()

A função time() retorna qualquer número de segundos desde a era UNIX, que é de 1º de Janeiro de 1970 00:00:00 até a hora atual de execução. Este número também é chamado de timestamp UNIX. Para utilizar a função basta declara-la conforme o código abaixo:

<?php
    $nextWeek = time() + (7 * 24 * 60 * 60);  

    echo '<p>Hoje:       '. date('d-m-Y') ."<br>"; // data atual

    echo 'Próxima semana: '. date('d-m-Y', $nextWeek) ."<br>"; // É uma semana após a data atual

    echo 'Próxima semana 2: '. date('d-m-Y', strtotime('+2 week')) ."<br>"; // São duas semanas após a data atual
?>

Além dessas funções, existem muitas outras que fazem operações com horas e datas. Abaixo segue uma combinação muito útil na hora de formatar a apresentação de datas e horas:

:%Y: Ano, com dois dígitos
:%y: Ano, com um ou dois dígitos
:%M: Mês, com dois dígitos
:%m: Mês, com um ou dois dígitos
:%D: Dia, com dois dígitos
:%d: Dia, com um ou dois dígitos
:%a: Total de dias
:%H: Hora, com dois dígitos
:%h: Hora, com um ou dois dígitos
:%I: Minuto, com dois dígitos
:%i: Minuto, com um ou dois dígitos
:%S: Segundo, com dois dígitos
:%s: Segundo, com um ou dois dígitos
:%R: Sinal de mais quando for um período positivo, menos quando negativo
:%r: Sinal de menos quando for um período negativo, vazio quando positivo

Exportar PHP/HTML arquivo PDF

Vamos mostrar como exportar uma página PHP/HTML para um arquivo PDF, mas antes, precisamos entender um pouco melhor como se pode fazer isso. Você já deve ter visto que a grande maioria dos programas disponibiliza a opção "Exportar para PDF". Em outros casos, você também pode instalar um programa para fazer isso pelo próprio sistema operacional e ele opera como um impressora "virtual". O que vamos apresentar, a partir de agora, é uma maneira de transformar o seu código HTML em PDF sem muito esforço. Tendo um documento padrão onde se possa mudar variáveis dentro desse template para depois exportar essa página para um arquivo PDF em formato A4, sem estragar o layout.

No internet pode-se encontrar uma quantidade enorme de scripts que ajudam a realizar essa conversão. Aqui neste demostrativo eu utilizei o DOMPDF.


Vamos ver o exemplo do seguinte trecho de codigo PHP/HTML:

[...]
<?php
$conteudo_html = '
    <!DOCTYPE html>
    <html>
        <head>
            <link rel="stylesheet" href="estilos/estilos.css" type="text/css" />
            <title></title>
        </head>
        <body>
            <div id="header">'.$titulo.'</div>
            <div class="left">'.$conteudo_esq.'</div>
            <div class="right">'.$conteudo_dto.'</div>
            <div id="footer">'.$rodape.'</div>
        </body>
    </html>';
?>
[...]


Para funcionar é basta o DOM abrir a página HTML em questão e converter a mesma para um documento PDF:


exemplo.php


<?php

/* Preparação do conteúdo
 * (costumo ter uma função a realizar esta tarefa)
 */
$html = '
<p>O meu HTML como quero ver no navegador!</p>
<p>Já formatado e com CSS.</p>';


/* Preparação do documento final
 */
$documentTemplate = '
<!doctype html> 
<html> 
    <head>
        <link rel="stylesheet" media="screen" href="http://www.site.com/css/style.css" type="text/css">
    </head> 
    <body>
        <div id="wrapper">
            '.$html.'
        </div>
    </body> 
</html>';


// inclusão da biblioteca
require_once("dompdf/dompdf_config.inc.php");


// alguns ajustes devido a variações de servidor para servidor
if ( get_magic_quotes_gpc() )
    $documentTemplate = stripslashes($documentTemplate);


// abertura de novo documento
$dompdf = new DOMPDF();

// carregar o HTML
$dompdf->load_html($documentTemplate);

// dados do documento destino
$dompdf->set_paper("A4", "portrail");

// gerar documento destino
$dompdf->render();

// enviar documento destino para download
$dompdf->stream("dompdf_out.pdf");

exit(0);
?>

Existem muitos exemplos a partir da página: http://pxd.me/dompdf/www/examples.php

Digitando dados numa lista

Muitas aplicações tem como característica a entrada de muitos registros ao mesmo tempo, para isso fazem o uso de técnicas de programação e gravação no banco de dados. Agora, vamos mostrar um exemplo utilizando um formulário de pedidos de produtos que são feitos por um cliente.

Organização da Semana 5

[...]

Boa semana e bom trabalho!

Prof. Douglas A.


Referências

[1] http://www.devmedia.com.br/manipulando-datas-com-php/32966





<< <> >>