|
| 1 | +# Tutorial # |
| 2 | + |
| 3 | +Deutsche Version: [Tutorial-de](Tutorial-de.md) |
| 4 | + |
| 5 | +Versión en español: [Tutorial-es](Tutorial-es.md) |
| 6 | + |
| 7 | +हिंदी संस्करण: [Tutorial-हिंदी](Tutorial-हिंदी.md) |
| 8 | + |
| 9 | +Versione in italiano: [Tutorial-it](Tutorial-it.md) |
| 10 | + |
| 11 | +Methods full documentation: [`fpdf.FPDF` API doc](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF) |
| 12 | + |
| 13 | +[TOC] |
| 14 | + |
| 15 | +## Tuto 1 - Exemplo Mínimo ## |
| 16 | + |
| 17 | +Vamos começar com um exemplo clássico: |
| 18 | + |
| 19 | +```python |
| 20 | +{% include "../tutorial/tuto1.py" %} |
| 21 | +``` |
| 22 | + |
| 23 | +[PDF resultante](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/tuto1.pdf) |
| 24 | + |
| 25 | +Após incluirmos o ficheiro da biblioteca, criamos um objeto `FPDF`. O |
| 26 | +[FPDF](fpdf/fpdf.html#fpdf.fpdf.FPDF) construtor é construído com os seguintes parâmetros por omissão: |
| 27 | +Páginas são em formato A4 vertical e a unidade de medida é o milímetro. |
| 28 | +Pode ser especificado explicitamente através de: |
| 29 | + |
| 30 | +```python |
| 31 | +pdf = FPDF(orientation="P", unit="mm", format="A4") |
| 32 | +``` |
| 33 | + |
| 34 | +É possível colocar o PDF em modo horizontal (`L`) ou em outros formatos de página |
| 35 | +(como `Letter` e `Legal`) e em outras unidades de medida (`pt`, `cm`, `in`). |
| 36 | + |
| 37 | +Neste momento, não há nenhuma página, então temos que adicionar uma com |
| 38 | +[add_page](fpdf/fpdf.html#fpdf.fpdf.FPDF.add_page). A origem está no canto superior esquerdo e a posição atual é, por padrão, colocada a 1 cm das bordas; as margens podem ser alteradas com [set_margins](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_margins). |
| 39 | + |
| 40 | +Antes de imprimirmos o texto, é obrigatório selecionar uma fonte com |
| 41 | +[set_font](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_font), caso contrário, o documento será inválido. |
| 42 | +Nós escolhemos Helvetica bold 16: |
| 43 | + |
| 44 | +```python |
| 45 | +pdf.set_font('helvetica', 'B', 16) |
| 46 | +``` |
| 47 | +Podemos formatar em itálico com `I`, sublinhar com` U` ou uma fonte normal |
| 48 | +com uma string vazia (ou qualquer combinação). Observe que o tamanho da fonte é fornecido em pontos, não milímetros (ou outra unidade do utilizador); esta é a única exceção. |
| 49 | +As outras fontes integradas são `Times`,` Courier`, `Symbol` e` ZapfDingbats`. |
| 50 | + |
| 51 | +Agora podemos imprimir uma célula com [cell](fpdf/fpdf.html#fpdf.fpdf.FPDF.cell). Uma célula é uma área retangular, possivelmente emoldurada, que contém algum texto. É renderizado na posição atual. Nós especificamos as suas dimensões, o seu texto (centrado ou alinhado), se as bordas devem ser desenhadas, e para onde a posição atual se deve mover depois desta alteração (para a direita, abaixo ou no início da próxima linha). Para adicionar uma moldura, temos de fazer o seguinte: |
| 52 | + |
| 53 | +```python |
| 54 | +pdf.cell(40, 10, 'Hello World!', 1) |
| 55 | +``` |
| 56 | + |
| 57 | +Para adicionar uma nova célula ao lado desta, com texto centralizado e ir para a próxima linha, teríamos de fazer: |
| 58 | + |
| 59 | +```python |
| 60 | +pdf.cell(60, 10, 'Powered by FPDF.', ln=1, align='C') |
| 61 | +``` |
| 62 | + |
| 63 | +**Nota**: a quebra de linha também pode ser feita com [ln](fpdf/fpdf.html#fpdf.fpdf.FPDF.ln). Esse método permite especificar, adicionalmente, a altura da quebra. |
| 64 | + |
| 65 | +Finalmente, o documento é fechado e guardado no caminho do arquivo fornecido utilizando |
| 66 | +[output](fpdf/fpdf.html#fpdf.fpdf.FPDF.output). Sem termos qualquer parâmetro fornecido, `output ()` retorna o buffer PDF `bytearray`. |
| 67 | + |
| 68 | +## Tuto 2 - Cabeçalho, rodapé, quebra de página e imagem## |
| 69 | + |
| 70 | +Aqui temos um exemplo de duas páginas com cabeçalho, rodapé e logótipo: |
| 71 | + |
| 72 | +```python |
| 73 | +{% include "../tutorial/tuto2.py" %} |
| 74 | +``` |
| 75 | + |
| 76 | +[PDF resultante](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/tuto2.pdf) |
| 77 | + |
| 78 | +Este exemplo usa os [header](fpdf/fpdf.html#fpdf.fpdf.FPDF.header) e o [footer](fpdf/fpdf.html#fpdf.fpdf.FPDF.footer) para processar cabeçalhos e rodapés de página. Estes são chamados automaticamente. Eles já existem na classe FPDF, mas não fazem nada, portanto, temos que os estender a classe e substituí-los. |
| 79 | + |
| 80 | +O logótipo é impresso utilizando o método [image](fpdf/fpdf.html#fpdf.fpdf.FPDF.image), especificando o seu canto superior esquerdo e sua largura. A altura é calculada automaticamente para respeitar as proporções da imagem. |
| 81 | + |
| 82 | +Para imprimir o número da página, um valor nulo é passado como a largura da célula. Isso significa que a célula deve se estender até a margem direita da página; é útil para centralizar texto. O número da página atual é retornado pelo método [page_no](fpdf/fpdf.html#fpdf.fpdf.FPDF.page_no); quanto ao número total de páginas, é obtido por meio do valor especial `{nb}` que será substituído quando se fecha o documento (desde que use primeiro o [alias_nb_pages](fpdf/fpdf.html#fpdf.fpdf.FPDF.alias_nb_pages)). |
| 83 | +Observe que o uso do método [set_y](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_y) permite definir a posição em um local absoluto da página, começando do início ou do fim. |
| 84 | + |
| 85 | +Outro recurso interessante que se usa aqui é a quebra de página automática. Desde do momento em que uma célula cruza o limite da página (a 2 centímetros da parte inferior por |
| 86 | +padrão), uma pausa é executada e a fonte restaurada. Embora o cabeçalho e rodapés selecionam a sua própria fonte (`helvetica`), o corpo continua com` Times`. |
| 87 | +Este mecanismo de restauração automática também se aplica a cores e largura de linha. |
| 88 | +O limite que dispara quebras de página pode ser definido com |
| 89 | +[set_auto_page_break](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_auto_page_break). |
| 90 | + |
| 91 | +## Tuto 3 - Quebras de linha e cores ## |
| 92 | + |
| 93 | +Vamos continuar com um exemplo que imprime parágrafos justificados e o uso de cores. |
| 94 | + |
| 95 | +```python |
| 96 | +{% include "../tutorial/tuto3.py" %} |
| 97 | +``` |
| 98 | + |
| 99 | +[PDF resultante](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/tuto3.pdf) |
| 100 | + |
| 101 | +[Texto de Júlio Verne](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/20k_c1.txt) |
| 102 | + |
| 103 | +O método [get_string_width](fpdf/fpdf.html#fpdf.fpdf.FPDF.get_string_width) permite determinar o comprimento de uma string na fonte atual, e que é usada aqui para calcular a posição e a largura do quadro ao redor do título. Em seguida, as cores são definidas (via [set_draw_color](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_draw_color), [set_fill_color](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_fill_color) e [set_text_color](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_text_color)) e a espessura da linha é definida como 1 mm (contra 0,2 por padrão) com [set_line_width](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_line_width). Finalmente, produzimos a célula (se o último parâmetro for verdadeiro, indica que o plano de fundo deve ser preenchido). |
| 104 | + |
| 105 | +O método usado para imprimir os parágrafos é [multi_cell](fpdf/fpdf.html#fpdf.fpdf.FPDF.multi_cell). |
| 106 | +Cada vez que uma linha atinge a extremidade direita da célula ou um código de fim de linha é encontrado, uma quebra de linha é emitida e uma nova célula é criada automaticamente sob a atual. O texto é justificado por padrão. |
| 107 | + |
| 108 | +Duas propriedades do documento são definidas: o título |
| 109 | +([set_title](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_title)) e o autor |
| 110 | +([set_author](fpdf/fpdf.html#fpdf.fpdf.FPDF.set_author)). As propriedades podem ser visualizadas de duas maneiras: |
| 111 | +A primeira é abrir o documento diretamente com o Acrobat Reader, vá para o menu Arquivo |
| 112 | +e escolha a opção Propriedades do documento. |
| 113 | +O segundo, também disponível no plug-in, é clicar com o botão direito e selecionar Propriedades do documento. |
| 114 | + |
| 115 | +## Tuto 4 - Multi Colunas ## |
| 116 | + |
| 117 | +Este exemplo é uma variante do anterior, mostrando como colocar o texto em várias colunas. |
| 118 | + |
| 119 | +```python |
| 120 | +{% include "../tutorial/tuto4.py"%} |
| 121 | +``` |
| 122 | + |
| 123 | +[PDF resultante](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/tuto4.pdf) |
| 124 | + |
| 125 | +[Texto de Júlio Verne](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/20k_c1.txt) |
| 126 | + |
| 127 | +A principal diferença em relação ao tutorial anterior é o uso do [accept_page_break](fpdf/fpdf.html#fpdf.fpdf.FPDF.accept_page_break) e os métodos set_col. |
| 128 | + |
| 129 | +Usando o método [accept_page_break](fpdf/fpdf.html#fpdf.fpdf.FPDF.accept_page_break), quando a célula ultrapassar o limite inferior da página, ela verificará o número da coluna atual. Se isso for menor que 2 (optamos por dividir a página em três colunas), chamando o método set_col, aumentando o número da coluna e alterando a posição da próxima coluna para que o texto continue aí. |
| 130 | + |
| 131 | +Quando o limite inferior da terceira coluna é alcançado, o método [accept_page_break](fpdf/fpdf.html#fpdf.fpdf.FPDF.accept_page_break) será redefinido e vai voltar para a primeira coluna e adicionar uma quebra de página. |
| 132 | + |
| 133 | + |
| 134 | +## Tuto 5 - Criar Tabelas ## |
| 135 | + |
| 136 | +Este tutorial irá explicar como criar tabelas facilmente. |
| 137 | + |
| 138 | +O código seguinte cria três tabelas diferentes para explicar o que pode ser alcançado com alguns ajustes simples. |
| 139 | + |
| 140 | +```python |
| 141 | +{% include "../tutorial/tuto5.py"%} |
| 142 | +``` |
| 143 | + |
| 144 | +[PDF resultante](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/tuto5.pdf) - |
| 145 | +[Texto dos países](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/countries.txt) |
| 146 | + |
| 147 | +Uma vez que uma tabela é apenas uma coleção de células, é natural construir uma |
| 148 | +a partir delas. |
| 149 | + |
| 150 | +O primeiro exemplo é obtido da maneira mais básica possível: moldura simples |
| 151 | + células, todas do mesmo tamanho e alinhadas à esquerda. O resultado é rudimentar, mas |
| 152 | + muito rápido de obter. |
| 153 | + |
| 154 | +A segunda tabela traz algumas melhorias: cada coluna tem sua largura própria, os títulos estão centrados e as figuras alinhadas à direita. Além disso, as linhas horizontais foram removidas. Isto é feito por meio do parâmetro border do método Cell(), que especifica quais lados da célula devem ser desenhados. Aqui nós queremos os esquerdo (L) e direito (R). Agora apenas o problema da linha horizontal para terminar a mesa permanece. Existem duas possibilidades para resolvê-lo: verificar para a última linha do loop, caso este em que usamos LRB para o parâmetro da borda; ou, como foi feito aqui, adicione a linha assim que o loop terminar. |
| 155 | + |
| 156 | +A terceira tabela é semelhante à segunda, mas usa cores. Preenchimento, texto e as cores das linhas são simplesmente especificadas. Coloração alternativa para linhas é obtida usando células alternativamente transparentes e preenchidas. |
| 157 | + |
| 158 | +## Tuto 6 - Criar links e misturar estilos de texto ## |
| 159 | + |
| 160 | +Este tutorial irá explicar várias maneiras de inserir links dentro de um documento PDF, bem como adicionar links para fontes externas. |
| 161 | + |
| 162 | +Também mostrará várias maneiras de usar diferentes estilos de texto, (negrito, itálico, sublinhado) no mesmo texto. |
| 163 | + |
| 164 | +```python |
| 165 | +{% include "../tutorial/tuto6.py"%} |
| 166 | +``` |
| 167 | + |
| 168 | +[PDF resultante](https://github.com/PyFPDF/fpdf2/raw/master/tutorial/tuto6.pdf) - |
| 169 | +[fpdf2-logo](https://raw.githubusercontent.com/PyFPDF/fpdf2/master/docs/fpdf2-logo.png) |
| 170 | + |
| 171 | + |
| 172 | + |
| 173 | +O novo método mostrado aqui para imprimir texto é [write()](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.write). É muito parecido com [multi_cell ()](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.multi_cell), sendo as principais diferenças: |
| 174 | + |
| 175 | +- O fim da linha está na margem direita e a próxima linha começa na |
| 176 | + margem esquerda. |
| 177 | +- A posição atual move-se para o final do texto. |
| 178 | + |
| 179 | +O método, portanto, nos permite escrever um pedaço de texto, alterar o estilo da fonte, e continuar do ponto exato em que paramos. |
| 180 | +Por outro lado, a sua principal desvantagem é que não podemos justificar o texto como nós fazemos com o método [multi_cell()(https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.multi_cell) . |
| 181 | + |
| 182 | +Na primeira página do exemplo, usámos [write()](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.write) |
| 183 | +para este propósito. O início da frase está escrita no estilo de texto normal, depois usando o método [set_font()](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.set_font), trocamos para sublinhado e acabámos a frase. |
| 184 | + |
| 185 | +Para adicionar o link externo a apontar para a segunda página, nós usámos o método [add_link()](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.add_link), que cria uma área clicável à qual demos o nome de “link” que direciona para outra parte do documento. Na segunda página, usámos [set_link()](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.set_link) para definir uma área de destino para o link que acabámos de criar. |
| 186 | + |
| 187 | +Para criar o link externo usando uma imagem, usámos [image()](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.image). O método tem a opção de passar um link como um dos seus argumentos. O link pode ser interno ou externo. |
| 188 | + |
| 189 | +Como alternativa, outra opção para mudar o estilo da fonte e adicionar links é usar o método `write_html()`. É um “parser” que permite adicionar texto, mudar o estilo da fonte e adicionar links usando html. |
0 commit comments