¿Cómo diseñar PDF generado en tiempo de ejecución a través de HTML?

Muchas veces, nos hemos enfrentado al problema de guardar una página web en particular o cualquier elemento específico en línea que necesitemos guardar en forma de archivo pdf mientras usamos el navegador. En ese caso, hemos utilizado la extensión de terceros o cualquier aplicación o herramienta para generarlo en un archivo pdf. En este artículo, aprenderemos a diseñar el archivo pdf generado en tiempo de ejecución a través de HTML. Esta tarea se puede lograr de 3 maneras:    

  • Imprima la página web específica y guárdela como PDF
  • Usando la biblioteca jsPDF
  • Usando la biblioteca html2pdf

Comprendamos los 3 conceptos uno por uno con la ayuda de ejemplos.

1.Imprima el elemento específico y guárdelo como PDF:

Vamos a generar una ventana y guardarla como un pdf durante el tiempo de ejecución. Esto es similar a las funciones de impresión predeterminadas del sistema. Los pasos se discuten a continuación.

  • Cree una nueva ventana usando el método ‘ window.open ‘.
  • Escriba el HTML interno para nuestra etiqueta <div>, dentro de esa ventana.
  • Imprime la ventana
  • Cerrar la ventana

Ejemplo: En este ejemplo, usaremos el enlace CDN html2pdf que ayudará a generar el archivo pdf.

HTML

<!DOCTYPE html>
<html lang="en">
  
<head>
  
    <!-- html2pdf CDN-->
    <script src=
"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.2/html2pdf.bundle.js">
    </script>
  
    <style>
        .container {
            position: fixed;
            top: 20%;
            left: 28%;
            margin-top: -65px;
            margin-left: -100px;
            border-radius: 7px;
        }
  
        .card {
            box-sizing: content-box;
            width: 700px;
            height: 150px;
            padding: 30px;
            border: 1px solid black;
            font-style: sans-serif;
            background-color: #f0f0f0;
        }
  
        #button {
            background-color: #4caf50;
            border-radius: 5px;
            margin-left: 650px;
            margin-bottom: 5px;
            color: white;
        }
  
        h2 {
            text-align: center;
            color: #24650b;
        }
    </style>
</head>
  
<body>
    <div class="container">
        <button id="button">Generate PDF</button>
        <div class="card" id="makepdf">
            <h2>Welcome to GeeksforGeeks</h2>
            <ul>
                <li>
                    <h4>
                        We are going to generate a pdf 
                        from the area inside the box
                    </h4>
                </li>
                <li>
                    <h4>
                        This is an example of generating 
                        pdf from HTML during runtime
                    </h4>
                </li>
            </ul>
        </div>
    </div>
</body>
  
<script>
    var button = document.getElementById("button");
    var makepdf = document.getElementById("makepdf");
  
    button.addEventListener("click", function () {
        var mywindow = window.open("", "PRINT", 
                "height=400,width=600");
  
        mywindow.document.write(makepdf.innerHTML);
  
        mywindow.document.close();
        mywindow.focus();
  
        mywindow.print();
        mywindow.close();
  
        return true;
    });
</script>
  
</html>

Producción:

2. Usando la biblioteca jsPDF:

Para generar un pdf en tiempo de ejecución, podemos usar la biblioteca jsPDF. Los pasos son:

  • Incluya jsPDF CDN en la etiqueta <head> en el documento HTML. El CDN se proporciona a continuación, busque ‘JsPDF CDN’ en Google para obtener la última versión.
  • Genere un pdf desde el div HTML usando el método ‘fromHTML’.
  • Guarde el archivo usando el método save() en javascript.

Ejemplo:

HTML

<!DOCTYPE html>
<html>
  
<head>
    <title>jsPDF Library</title>
  
        <!--JSPDF CDN-->
        <script src=
"https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.min.js">
        </script>
  
    <style>
        .container {
            position: fixed;
            top: 20%;
            left: 28%;
            margin-top: -65px;
            margin-left: -100px;
            border-radius: 7px;
        }
  
        #makepdf {
            box-sizing: content-box;
            width: 700px;
            height: 150px;
            padding: 30px;
            border: 1px solid black;
            font-style: sans-serif;
            background-color: #f0f0f0;
        }
  
        #button {
            background-color: #4caf50;
            border-radius: 5px;
            margin-left: 650px;
            margin-bottom: 5px;
            color: white;
        }
  
        h2 {
            text-align: center;
            color: #24650b;
        }
    </style>
</head>
  
<body>
    <div class="container">
        <button id="button">Generate PDF</button>
        <div id="makepdf">
            <h2>Welcome to GeeksforGeeks</h2>
            <ul>
                <li>
                    <h4>
                        We are going to generate a pdf 
                        from the area inside the box
                    </h4>
                </li>
                <li>
                    <h4>
                        This is an example of generating 
                        pdf from HTML during runtime
                    </h4>
                </li>
            </ul>
        </div>
    </div>
  
    <script>
        var button = document.getElementById("button");
        button.addEventListener("click", function () {
            var doc = new jsPDF("p", "mm", [300, 300]);
            var makePDF = document.querySelector("#makepdf");
  
            // fromHTML Method
            doc.fromHTML(makePDF);
            doc.save("output.pdf");
        });
    </script>
</body>
  
</html>

Producción:

3. Usando la biblioteca html2pdf:

Los pasos para generar un archivo pdf utilizando la biblioteca html2pdf son:

  • Incluya el CDN html2pdf en la parte superior del documento HTML. El CDN se proporciona a continuación, busque ‘html2pdf CDN’ en Google para obtener la última versión.
  • Genera pdf usando el objeto html2pdf(). Este es un objeto predeterminado de la biblioteca html2pdf.
  • Guarde el pdf.

Ejemplo:

HTML

<!DOCTYPE html>
<html lang="en">
  
<head>
  
    <!-- html2pdf CDN-->
    <script src=
"https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.2/html2pdf.bundle.js">
    </script>
  
    <style>
        .container {
            position: fixed;
            top: 20%;
            left: 28%;
            margin-top: -65px;
            margin-left: -100px;
            border-radius: 7px;
        }
  
        .card {
            box-sizing: content-box;
            width: 700px;
            height: 150px;
            padding: 30px;
            border: 1px solid black;
            font-style: sans-serif;
            background-color: #f0f0f0;
        }
  
        #button {
            background-color: #4caf50;
            border-radius: 5px;
            margin-left: 650px;
            margin-bottom: 5px;
            color: white;
        }
  
        h2 {
            text-align: center;
            color: #24650b;
        }
    </style>
</head>
  
<body>
    <div class="container">
        <button id="button">Generate PDF</button>
        <div class="card" id="makepdf">
            <h2>Welcome to GeeksforGeeks</h2>
            <ul>
                <li>
                    <h4>
                        We are going to generate a pdf 
                        from the area inside the box
                    </h4>
                </li>
                <li>
                    <h4>
                        This is an example of generating 
                        pdf from HTML during runtime
                    </h4>
                </li>
            </ul>
        </div>
    </div>
  
    <script>
        var button = document.getElementById("button");
        var makepdf = document.getElementById("makepdf");
  
        button.addEventListener("click", function () {
            html2pdf().from(makepdf).save();
        });
    </script>
</body>
  
</html>

Producción:

Publicación traducida automáticamente

Artículo escrito por akashkumarsen4 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *