Como criar PDFs em Node.js usando PDFKit

Como criar PDFs em Node.js usando PDFKit

PDFKit é uma biblioteca Node.js que torna mais fácil para os desenvolvedores criar e trabalhar com arquivos PDF. Ele oferece uma API direta, mas eficaz, para produzir PDFs e adicionar diferentes tipos de conteúdo a eles, como texto, imagens e formas.

Aprenda a usar o PDF Kit para criar PDFs em Node.js.

Configurando o PDFkit

Você deve ter Node.js e npm (o gerenciador de pacotes Node.js) instalados em sua máquina para acompanhar.

Certifique-se de ter essas ferramentas instaladas executando os seguintes comandos de terminal:

node -v
npm -v

Para começar a usar o PDFKit em seu projeto Node.js, instale-o executando o seguinte comando npm:

npm install pdfkit

Este comando irá instalar o PDFKit e adicioná-lo às dependências do seu projeto.

Criando um documento PDF com o PDFKit

Para criar um documento PDF usando o PDFKit, exija o pacote pdfkit e o módulo fs (sistema de arquivos) em seu arquivo de script:

const PDFDocument = require('pdfkit');
const fs = require('fs');

Em seguida, crie uma nova instância da classe PDFDocument . Esta classe representa um arquivo PDF:

const doc = new PDFDocument();

A instância criada é um fluxo legível, o que significa que você pode usar o método pipe() para salvar seu conteúdo em um arquivo.

Para fazer isso, canalize a instância do documento para um fluxo gravável criado por fs.createWriteStream :

doc.pipe(fs.createWriteStream('MyPDFDoc.pdf'));

O método createWriteStream salva o conteúdo de um arquivo PDF em um local especificado no sistema de arquivos local.

O bloco de código acima salvará o arquivo PDF resultante em seu diretório de trabalho atual, com o nome MyPDFDoc.pdf .

É importante sempre encerrar o fluxo após adicionar conteúdo ao PDF. Você pode fazer isso usando este comando:

doc.end();

Agora execute o comando node node [nome do script] para criar o arquivo PDF MyPDFDoc.pdf em seu diretório de trabalho atual.

Adicionando texto com PDFKit

Antes de canalizar seu documento para salvá-lo, você pode fazer várias alterações. O PDFKit simplifica a adição de texto aos documentos e inclui muitas opções para personalizar a exibição da saída.

Para adicionar texto ao documento, basta chamar o método text() e passar o texto que deseja adicionar como argumento:

doc.text("Coding is Easy!")

À medida que o PDFKIT adiciona texto ao documento, ele acompanha as posições X e Y atuais desse texto. Portanto, sempre que você chamar o método de texto, o PDFKit adicionará uma nova linha abaixo da anterior.

No entanto, ao fornecer as coordenadas X e Y para o método de texto após o próprio texto, você pode alterar sua posição:

doc.text('Coding is Easy!', 100, 100)

Para mover uma linha para cima ou para baixo, chame o método moveDown ou moveUp com o número de linhas que o texto deve mover:

doc.moveDown(3);

doc.moveUp();

Por padrão, chamar qualquer um dos métodos sem passar um argumento fará com que ele se mova apenas uma linha.

O PDFKit suporta cada uma das 14 fontes padrão definidas pelo formato PDF. A documentação de texto PDFKit tem uma lista completa dessas fontes padrão.

Use o método font() para especificar a fonte necessária. Basta passar o nome da fonte correspondente como uma string:

doc.font('Times-Roman')
   .text('Coding is Easy!');

Você também pode alterar o tamanho da fonte e a cor do texto usando os métodos fontSize() e fillColor() , respectivamente.

Por exemplo:

// This changes the text color to red and gives it a font size of 8
doc.fillColor('red')
   .fontSize(8)
   .text('Coding is Easy!');

Adicionando imagens com o PDFKit

Para uma imagem em seu documento PDF, simplesmente passe seu caminho para o método image na instância do documento:

doc.image('path/to/image.jpeg')

PDFKit permite adicionar imagens em formato JPEG ou PNG.

Por padrão, o PDFKit inserirá a imagem em seu tamanho nativo. Você pode alterar as dimensões de uma imagem fornecendo um objeto contendo pares chave-valor como um argumento para o método image() . Você pode especificar uma largura, altura e alinhamento horizontal e vertical.

Por exemplo:

// Specifying the width alone
doc.image('path/to/image.jpg', { width: 300 });

// Specifying both the width and height
doc.image('path/to/image.jpg', { width: 300, height:200 })

Adicionando páginas com PDFKit

Para adicionar novas páginas ao documento PDF, basta chamar o método addPage na instância do documento:

doc.addPage()

Para adicionar conteúdo automaticamente toda vez que você adicionar uma nova página, use o evento pageAdded na instância do documento.

Por exemplo:

doc.on('pageAdded', () => doc.text("Coding is Easy!"));

O PDFKit permite especificar as dimensões da página ao criar um novo documento ou adicionar uma nova página a uma existente. Existem vários tamanhos de página predefinidos que a documentação em papel do PDFKit explica.

Para usar qualquer um desses tamanhos de página predefinidos, passe um objeto para o construtor PDFDocument ou para o método addPage() . Use a propriedade size para especificar uma string que é o nome do tamanho do papel.

Por exemplo:

// constructor
const doc = new PDFDocument({ size: 'A5' });

// addPage function
doc.addPage({ size: 'A7' });

Passar este objeto de opções para o construtor PDFDocument define o tamanho de página padrão para todo o documento. Você pode substituir esse padrão passando um valor diferente para o método addPage .

Você pode definir as margens da página passando um objeto para a propriedade margins ao adicionar páginas.

A propriedade margins pega um objeto com as propriedades top, bottom, left e right representando cada margem.

Por exemplo:

// Add different margins on each side
doc.addPage({
  margins: {
    top: 72,
    bottom: 72,
    left: 50,
    right: 50
  }
});

Esse código define as margens superior e inferior em 72 pontos e as margens esquerda e direita em 50 pontos. Observe que a margem padrão para documentos criados no PDFKit é uma margem de 1 polegada (72 pontos) em todos os lados.

Para definir todas as margens superior, inferior, esquerda e direita com o mesmo valor, simplesmente passe um objeto com uma propriedade de margem para o método addPage :

doc.addPage({ margin: 60 }) // add a 60 point margin to each side

As vantagens de criar PDFs com PDFKit no Node.js

O PDFKit permite que você produza documentos padrão e suportados de seus aplicativos Node.js. Com o PDFKit, você pode lidar facilmente com documentos complexos. Além disso, pode facilitar a entrega de documentos aos usuários e torná-los mais simples de compartilhar e imprimir.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *