JSFiddle - React, Tailwind, and code Playground

by Rapha Souza

HTML

<script src="https://code.jquery.com/jquery-3.4.1.slim.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css">
<!doctype html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Exportar HTML para PDF</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.71/pdfmake.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.71/vfs_fonts.js"></script>
  </head>
  <body>
    <h1>Exportar HTML para PDF</h1>
    <div id="content">
      <h2>Conteúdo</h2>
      <p>
        Este é um exemplo de conteúdo que será exportado para PDF com cabeçalho
        e rodapé fixos em todas as páginas.
      </p>
      <p>Adicione mais conteúdo aqui para gerar várias páginas no PDF...</p>
      <p>Parágrafo 3...</p>
      <p>Parágrafo 4...</p>
      <!-- Continue adicionando mais conteúdo -->
    </div>
    <button onclick="exportToPDF()">Exportar para PDF</button>

    <script>
      function exportToPDF() {
        var docDefinition = {
          content: [
            {
              stack: [
                { text: "Conteúdo", style: "header" },
                {
                  text: document.getElementById("content").innerText,
                  style: "content",
                },
              ],
            },
          ],
          styles: {
            header: {
              fontSize: 18,
              bold: true,
              margin: [0, 0, 0, 10],
            },
            content: {
              fontSize: 12,
            },
          },
          header: function (currentPage, pageCount) {
            return {
              image:...

CSS

.row {
  background: #f8f9fa;
  margin-top: 20px;
}

.col {
  border: solid 1px #6c757d;
  padding: 10px;
}