Ir para o conteúdo do rodapé
FERRAMENTAS DE PDF

Como criar arquivos PDF em JavaScript

No âmbito do compartilhamento de documentos, o formato PDF (Portable Document Format), pioneiro da Adobe, desempenha um papel crucial na preservação da integridade de conteúdo rico em texto e visualmente atraente. Acessar um arquivo PDF online geralmente requer um programa específico. No cenário digital atual, os arquivos PDF tornaram-se indispensáveis ​​para diversas publicações importantes. Muitas empresas dependem de arquivos PDF para criar documentos profissionais e faturas. Além disso, os desenvolvedores frequentemente utilizam bibliotecas de criação de PDFs para atender a requisitos específicos dos clientes. O processo de geração de PDFs foi simplificado com o surgimento das bibliotecas modernas. Ao selecionar a biblioteca mais adequada para um projeto que envolva a geração de PDFs, é essencial considerar fatores como recursos de criação, leitura e conversão, garantindo uma integração perfeita e um desempenho ideal.

Bibliotecas JavaScript

Considere, por exemplo, o cenário em que desejamos que o cliente possa baixar e imprimir uma cópia da nossa fatura em PDF sem esforço. Além disso, é crucial para nós manter o layout preciso da fatura e garantir uma qualidade de impressão impecável.

Nesta seção, vamos explorar uma série de bibliotecas JavaScript altamente conceituadas que se destacam na conversão e criação de documentos HTML para PDF, fornecendo ferramentas versáteis para a geração e conversão de documentos de forma eficiente e precisa.

1. PDFKit

O PDFKit foi uma biblioteca de PDF que esteve entre as primeiras a ser lançada no vasto ecossistema de bibliotecas JavaScript . Sua popularidade cresceu significativamente desde o lançamento inicial em 2012 e, em 2021, ainda recebia atualizações regulares.

Utilizando o Webpack, o PDFKit oferece suporte tanto para bibliotecas Node quanto para navegadores web, sendo possível o uso de fontes personalizadas e a incorporação de imagens.

No entanto, como veremos na comparação, algumas bibliotecas PDF são, na prática, apenas wrappers do PDFKit e talvez um pouco mais fáceis de usar do que o próprio PDFKit.

Não existe uma API de alto nível disponível para o PDFKit. A documentação também costuma ser difícil. Como seria de esperar, leva algum tempo para se acostumar, e você pode descobrir que gerar PDFs usando JavaScript nem sempre é a tarefa mais fácil.

// Requiring the necessary modules for file system and PDF document creation.
const fs = require('fs');
const PDFDocument = require('pdfkit');

// Create a new PDF document instance
const doc = new PDFDocument();

// Add text content to the PDF document
doc.text('Hello world!');

// Define the output file location and start writing the PDF content to it
doc.pipe(fs.createWriteStream('Demo.pdf'));

// Finalize the PDF file
doc.end();
// Requiring the necessary modules for file system and PDF document creation.
const fs = require('fs');
const PDFDocument = require('pdfkit');

// Create a new PDF document instance
const doc = new PDFDocument();

// Add text content to the PDF document
doc.text('Hello world!');

// Define the output file location and start writing the PDF content to it
doc.pipe(fs.createWriteStream('Demo.pdf'));

// Finalize the PDF file
doc.end();
JAVASCRIPT

2. pdfmake

Ao contrário do PDFKit, que usa o método imperativo convencional para gerar algo, o pdfmake usa uma abordagem declarativa. Consequentemente, o uso da biblioteca pdfmake torna mais simples concentrar-se na funcionalidade pretendida da produção de PDF, em vez de perder tempo ensinando a biblioteca a alcançar um determinado resultado.

É crucial ter em mente que, embora certas soluções possam parecer promissoras, elas podem não ser perfeitas. Um exemplo disso é a integração de fontes personalizadas com o pdfmake ao utilizar o Webpack, o que pode potencialmente causar problemas. Infelizmente, existe pouca documentação online disponível sobre esse problema específico. No entanto, se você não estiver utilizando o Webpack, pode facilmente clonar o repositório Git e executar o script de incorporação de fontes para superar quaisquer obstáculos potenciais associados à integração de fontes personalizadas.

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.56/pdfmake.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.56/vfs_fonts.js"></script>
</head>
<body>
    <script type="text/javascript">
        // Function to create and print a PDF document
        function CreatePdf() {
            // Define document content and styles
            var docDefinition = {
                content: [
                    { text: "Hello world" } // Text content to be included in the PDF
                ],
                defaultStyle: {}
            };
            // Create and print the PDF using pdfMake library
            pdfMake.createPdf(docDefinition).print();
        }
    </script>

    <button onclick="CreatePdf()">Print pdf</button>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.56/pdfmake.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.56/vfs_fonts.js"></script>
</head>
<body>
    <script type="text/javascript">
        // Function to create and print a PDF document
        function CreatePdf() {
            // Define document content and styles
            var docDefinition = {
                content: [
                    { text: "Hello world" } // Text content to be included in the PDF
                ],
                defaultStyle: {}
            };
            // Create and print the PDF using pdfMake library
            pdfMake.createPdf(docDefinition).print();
        }
    </script>

    <button onclick="CreatePdf()">Print pdf</button>
</body>
</html>
HTML

Como criar arquivos PDF em JavaScript: Figura 1

3. IronPDF

O IronPDF foi criado para facilitar a criação, a navegação e a edição de documentos PDF por parte dos desenvolvedores. Ele funciona como um poderoso conversor de PDF e oferece uma API básica para criar, editar e processar arquivos PDF.

IronPDF for Node.js simplifica o processo de criação e personalização programática de documentos PDF. Desenvolvido pela Iron Software, um fornecedor confiável de bibliotecas de processamento de documentos de alto desempenho, o IronPDF oferece uma solução robusta para geração de PDFs em ambientes Node.js Ele se integra perfeitamente a projetos Node.js , fornecendo aos desenvolvedores ferramentas poderosas para gerar, formatar e editar PDFs com facilidade.

A biblioteca IronPDF possui uma ampla gama de recursos, incluindo a capacidade de dividir e combinar páginas em documentos PDF novos ou existentes, ler e editar arquivos PDF existentes, extrair imagens de arquivos PDF, adicionar texto, gráficos, marcadores, marcas d'água, cabeçalhos e rodapés a arquivos PDF, tudo sem a necessidade do Acrobat Reader. A partir de arquivos CSS e de mídia CSS, é possível gerar documentos PDF. O IronPDF permite que os usuários criem, carreguem e atualizem formulários PDF, tanto novos quanto já existentes.

Principais funcionalidades do IronPDF for Node.js: Geração versátil de PDFs: Com o IronPDF, os desenvolvedores podem gerar PDFs a partir de diversas fontes, incluindo HTML, CSS, JavaScript, imagens e outros tipos de arquivo. Essa flexibilidade permite a criação de documentos PDF dinâmicos e visualmente atraentes, adaptados a requisitos específicos.

  • Personalização avançada de documentos: o IronPDF permite que os desenvolvedores aprimorem documentos PDF com recursos como cabeçalhos, rodapés, anexos, assinaturas digitais, marcas d'água e marcadores. Isso permite a criação de PDFs de nível profissional com conteúdo rico e elementos interativos.
  • Recursos de segurança: O IronPDF oferece recursos de segurança robustos para proteger PDFs contra acesso não autorizado. Os desenvolvedores podem implementar medidas de segurança como senhas, assinaturas digitais, metadados e outras configurações de segurança para proteger informações confidenciais contidas em documentos PDF.
  • Desempenho otimizado: O IronPDF foi projetado para oferecer desempenho ideal, apresentando suporte completo a multithreading e operações assíncronas. Isso garante a geração eficiente de PDFs, tornando-os adequados para aplicações de missão crítica onde o desempenho é fundamental.
  • Conjunto abrangente de recursos: Com mais de 50 recursos para criar, formatar e editar documentos PDF, o IronPDF oferece uma solução completa para todas as tarefas relacionadas a PDFs. Desde a geração básica de documentos até a personalização e segurança avançadas, o IronPDF oferece uma ampla gama de recursos para atender às necessidades dos desenvolvedores.

O código abaixo demonstra como usar JavaScript para renderizar HTML em um arquivo PDF com qualidade de imagem perfeita:

import { PdfDocument } from "@ironsoftware/ironpdf";

(async () => {
    // HTML content containing JavaScript to be executed upon rendering
    const htmlWithJavaScript = `<h1>This is HTML</h1>
    <script>
        document.write('<h1>This is JavaScript</h1>');
        window.ironpdf.notifyRender(); // Notify IronPDF when rendering is done
    </script>`;

    // Rendering options to enable JavaScript
    const renderOptions = {
        enableJavaScript: true,
    };

    // Render HTML content to a PDF
    const pdf = await PdfDocument.fromHtml(htmlWithJavaScript, { renderOptions });

    // Save the PDF to a file
    await pdf.saveAs("javascript-in-html.pdf");
})();
import { PdfDocument } from "@ironsoftware/ironpdf";

(async () => {
    // HTML content containing JavaScript to be executed upon rendering
    const htmlWithJavaScript = `<h1>This is HTML</h1>
    <script>
        document.write('<h1>This is JavaScript</h1>');
        window.ironpdf.notifyRender(); // Notify IronPDF when rendering is done
    </script>`;

    // Rendering options to enable JavaScript
    const renderOptions = {
        enableJavaScript: true,
    };

    // Render HTML content to a PDF
    const pdf = await PdfDocument.fromHtml(htmlWithJavaScript, { renderOptions });

    // Save the PDF to a file
    await pdf.saveAs("javascript-in-html.pdf");
})();
JAVASCRIPT

Você também pode executar JavaScript personalizado que modifica facilmente a aparência do conteúdo HTML:

import { PdfDocument } from "@ironsoftware/ironpdf";

(async () => {
    // JavaScript code to change the text color of header tags to red
    const javascriptCode = "document.querySelectorAll('h1').forEach(function(el){ el.style.color = 'red'; })";

    // HTML content which will be affected by the custom JavaScript
    const htmlContent = "<h1>Happy New Year!</h1>";

    // Rendering options to enable and apply the custom JavaScript
    const renderOptions = {
        enableJavaScript: true,
        javascript: javascriptCode,
    };

    // Render HTML content to a PDF
    const pdf = await PdfDocument.fromHtml(htmlContent, { renderOptions });

    // Save the PDF with the applied JavaScript effects
    await pdf.saveAs("executed_js.pdf");
})();
import { PdfDocument } from "@ironsoftware/ironpdf";

(async () => {
    // JavaScript code to change the text color of header tags to red
    const javascriptCode = "document.querySelectorAll('h1').forEach(function(el){ el.style.color = 'red'; })";

    // HTML content which will be affected by the custom JavaScript
    const htmlContent = "<h1>Happy New Year!</h1>";

    // Rendering options to enable and apply the custom JavaScript
    const renderOptions = {
        enableJavaScript: true,
        javascript: javascriptCode,
    };

    // Render HTML content to a PDF
    const pdf = await PdfDocument.fromHtml(htmlContent, { renderOptions });

    // Save the PDF with the applied JavaScript effects
    await pdf.saveAs("executed_js.pdf");
})();
JAVASCRIPT

Como criar arquivos PDF em JavaScript: Figura 2

Ao clicar no botão de download, o arquivo PDF será baixado, conforme mostrado na página do PDF na imagem acima. O arquivo PDF gerado será semelhante ao mostrado abaixo.

Como criar arquivos PDF em JavaScript: Figura 3

Conclusão

É importante mencionar que, quando utilizado por terceiros, o código JavaScript mostrado acima apresenta potencial para uso indevido e problemas de segurança. É crucial considerar os riscos, como acesso não autorizado e vulnerabilidades de segurança de dados, ao inserir esse tipo de código em uma página ou site da web. Além disso, é importante levar em conta a necessidade de oferecer suporte a navegadores desatualizados que podem não ter todos os recursos necessários, bem como problemas de compatibilidade com diversos sistemas e navegadores.

O IronPDF está disponível não apenas for Node.js , mas também para outras plataformas populares, incluindo .NET , Java e Python . Essa disponibilidade multiplataforma garante consistência e flexibilidade para desenvolvedores que trabalham com diferentes conjuntos de tecnologias. Com seu conjunto robusto de recursos, integração perfeita e desempenho impecável, o IronPDF é uma ferramenta valiosa para desenvolvedores que buscam otimizar a geração de PDFs em seus projetos Node.js

Para atender às diversas demandas dos desenvolvedores, a biblioteca oferece uma variedade de opções de licenciamento, incluindo uma licença de avaliação gratuita e licenças adicionais para desenvolvedores que podem ser adquiridas. O pacote $799 Lite inclui uma licença permanente, garantia de reembolso de 30 dias, um ano de suporte de software e opções de atualização. Não há despesas adicionais além da compra inicial.

Darrius Serrant
Engenheiro de Software Full Stack (WebOps)

Darrius Serrant é bacharel em Ciência da Computação pela Universidade de Miami e trabalha como Engenheiro de Marketing WebOps Full Stack na Iron Software. Atraído por programação desde jovem, ele via a computação como algo misterioso e acessível ao mesmo tempo, tornando-a o meio ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim