• <source id="ses40"><acronym id="ses40"></acronym></source><option id="ses40"></option>
    <source id="ses40"></source>

    ${postData}<\/h1><\/body><\/html>`;\n\n await page.setContent(content);\n await page.emulateMediaType('screen');\n await page.pdf({\n path: 'resume.pdf',\n format: 'A4',\n printBackground: true,\n });\n\n console.log('PDF created');\n await browser.close();\n } catch (err) {\n console.error('Error:', err);\n }\n});\n<\/pre>\n\n\n\n

    Here’s what this code does: <\/p>\n\n

      \n
    1. Launches a Puppeteer browser instance in headless mode<\/strong>.\n<\/li>\n
    2. Opens a new page and sets the content using the data provided by the user.\n<\/li>\n
    3. Converts the page content into a PDF and saves it as resume.pdf.\n<\/li>\n
    4. Closes the browser to free up resources.<\/li>\n<\/ol>\n\n\n
      \n\n

      \n \n \n Step 4: Use the PdfController Function in the POST Endpoint\n<\/h2>\n\n

      Now, connect the PdfController function to the POST endpoint in index.js:
      \n<\/p>\n\n

      import PdfController from \".\/controllers\/controller.js\";\n\napp.post(\"\/data\", async (req: Request, res: Response) => {\n    let postData = req.body.data; \/\/ Storing the data sent from the client\n    await PdfController(postData);\n});\n<\/pre>\n\n\n\n

      This ensures that whenever the \/data endpoint is called, the logic for generating the PDF will be executed.<\/p>\n


      \n\n

      \n \n \n Step 5: Verify the PDF Generation\n<\/h2>\n\n

      At this point, you can test the endpoint using Postman<\/strong> or any other HTTP client. When you send a POST request with the relevant text data, a PDF named resume.pdf will be created in the project’s root directory. <\/p>\n\n\n


      \n\n

      \n \n \n Step 6: Send the PDF Back to the Client\n<\/h2>\n\n

      To send the generated PDF back to the client as a response, install the fs-extra package:
      \n<\/p>\n\n

        npm install puppeteer\n<\/pre>\n\n\n\n

      Then update the POST endpoint as follows:
      \n<\/p>\n\n

      app.post(\"\/data\", async (req: Request, res: Response) => {\n    let postData = req.body.data; \/\/ Storing the data sent from the client\n});\n<\/pre>\n\n\n\n

      This code sends the resume.pdf file as a downloadable attachment to the client.<\/p>\n\n\n


      \n\n

      \n \n \n Conclusion\n<\/h2>\n\n

      \"Use<\/p>\n\n

      And that’s it! ? You’ve built a complete PDF generator using Node.js<\/strong> and Puppeteer<\/strong>. This setup dynamically generates PDFs based on user input and sends them back as downloadable files.<\/p>\n\n

      Here’s what you achieved: <\/p>\n\n

        \n
      • Set up a Node.js server with a POST endpoint.\n<\/li>\n
      • Used Puppeteer to generate PDFs dynamically.\n<\/li>\n
      • Sent the generated PDF back to the client.\n<\/li>\n<\/ul>\n\n\n
        \n\n

        \n \n \n Bonus\n<\/h3>\n\n

        If you’d like to generate well-structured and formatted PDFs<\/strong> (e.g., resumes or invoices with tables and styles), let me know in the comments. I’d love to write another tutorial for advanced use cases. <\/p>\n\n

        Also, feel free to check out the complete project code. It’s well-documented and beginner-friendly.<\/p>\n\n

        Have a nice day!<\/p>\n\n\n \n\n \n "}

        国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

        Home Web Front-end JS Tutorial Use puppeteer with Node to create PDFs!

        Use puppeteer with Node to create PDFs!

        Dec 27, 2024 pm 12:25 PM

        How to Create a PDF Generator Using Puppeteer and Node.js

        Use puppeteer with Node to create PDFs!

        Generating dynamic PDFs is a common requirement in web development. Whether it's for invoices, reports, or resumes, creating a robust PDF generator is an essential skill for developers. In this article, I'll walk you through building a PDF generator using Node.js and Puppeteer, a powerful headless browser library.

        As an example, I used this same method to build my CV Maker Project, which takes user input and dynamically generates a PDF. You can see the live demo of the project here: Live Demo.

        This guide is written in plain, beginner-friendly language. If any part feels unclear, feel free to leave a comment, and I’ll address it as soon as possible.


        Prerequisites

        Before we begin, ensure you have the following:

        • Node.js installed on your machine.
        • A basic Node.js project skeleton set up.
        • Puppeteer installed as a dependency in your project:
          npm install puppeteer
        

        If you’d like to reference the complete source code for this tutorial, check out my GitHub repository.


        Step 1: Create a POST Endpoint for Receiving Data

        First, create an endpoint where the client can send data to generate a PDF. For this, we’ll define a simple POST route in our index.js (or equivalent main server file).

        app.post("/data", async (req: Request, res: Response) => {
            let postData = req.body.data; // Storing the data sent from the client
        });
        

        This endpoint will receive the data that needs to be included in the PDF.


        Step 2: Create a Controller File

        To keep the code organized, create a folder named controllers in your project directory. Inside this folder, create a file named PdfController.js.

        The controller file is where we’ll write the logic for generating the PDF. This keeps our code modular and makes it easier to maintain.


        Step 3: Write Logic for PDF Generation

        In PdfController.js, add the following code to generate a PDF using Puppeteer:

        export default (async function (postData) {
            try {
                const browser = await puppeteer.launch({
                    headless: true,
                    args: ["--no-sandbox", "--disable-gpu"],
                });
        
                const page = await browser.newPage();
                const content = `<html><body><h1>${postData}</h1></body></html>`;
        
                await page.setContent(content);
                await page.emulateMediaType('screen');
                await page.pdf({
                    path: 'resume.pdf',
                    format: 'A4',
                    printBackground: true,
                });
        
                console.log('PDF created');
                await browser.close();
            } catch (err) {
                console.error('Error:', err);
            }
        });
        

        Here’s what this code does:

        1. Launches a Puppeteer browser instance in headless mode.
        2. Opens a new page and sets the content using the data provided by the user.
        3. Converts the page content into a PDF and saves it as resume.pdf.
        4. Closes the browser to free up resources.

        Step 4: Use the PdfController Function in the POST Endpoint

        Now, connect the PdfController function to the POST endpoint in index.js:

        import PdfController from "./controllers/controller.js";
        
        app.post("/data", async (req: Request, res: Response) => {
            let postData = req.body.data; // Storing the data sent from the client
            await PdfController(postData);
        });
        

        This ensures that whenever the /data endpoint is called, the logic for generating the PDF will be executed.


        Step 5: Verify the PDF Generation

        At this point, you can test the endpoint using Postman or any other HTTP client. When you send a POST request with the relevant text data, a PDF named resume.pdf will be created in the project’s root directory.


        Step 6: Send the PDF Back to the Client

        To send the generated PDF back to the client as a response, install the fs-extra package:

          npm install puppeteer
        

        Then update the POST endpoint as follows:

        app.post("/data", async (req: Request, res: Response) => {
            let postData = req.body.data; // Storing the data sent from the client
        });
        

        This code sends the resume.pdf file as a downloadable attachment to the client.


        Conclusion

        Use puppeteer with Node to create PDFs!

        And that’s it! ? You’ve built a complete PDF generator using Node.js and Puppeteer. This setup dynamically generates PDFs based on user input and sends them back as downloadable files.

        Here’s what you achieved:

        • Set up a Node.js server with a POST endpoint.
        • Used Puppeteer to generate PDFs dynamically.
        • Sent the generated PDF back to the client.

        Bonus

        If you’d like to generate well-structured and formatted PDFs (e.g., resumes or invoices with tables and styles), let me know in the comments. I’d love to write another tutorial for advanced use cases.

        Also, feel free to check out the complete project code. It’s well-documented and beginner-friendly.

        Have a nice day!

        The above is the detailed content of Use puppeteer with Node to create PDFs!. For more information, please follow other related articles on the PHP Chinese website!

        Statement of this Website
        The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

        Hot AI Tools

        Undress AI Tool

        Undress AI Tool

        Undress images for free

        Undresser.AI Undress

        Undresser.AI Undress

        AI-powered app for creating realistic nude photos

        AI Clothes Remover

        AI Clothes Remover

        Online AI tool for removing clothes from photos.

        Clothoff.io

        Clothoff.io

        AI clothes remover

        Video Face Swap

        Video Face Swap

        Swap faces in any video effortlessly with our completely free AI face swap tool!

        Hot Tools

        Notepad++7.3.1

        Notepad++7.3.1

        Easy-to-use and free code editor

        SublimeText3 Chinese version

        SublimeText3 Chinese version

        Chinese version, very easy to use

        Zend Studio 13.0.1

        Zend Studio 13.0.1

        Powerful PHP integrated development environment

        Dreamweaver CS6

        Dreamweaver CS6

        Visual web development tools

        SublimeText3 Mac version

        SublimeText3 Mac version

        God-level code editing software (SublimeText3)

        Java vs. JavaScript: Clearing Up the Confusion Java vs. JavaScript: Clearing Up the Confusion Jun 20, 2025 am 12:27 AM

        Java and JavaScript are different programming languages, each suitable for different application scenarios. Java is used for large enterprise and mobile application development, while JavaScript is mainly used for web page development.

        Javascript Comments: short explanation Javascript Comments: short explanation Jun 19, 2025 am 12:40 AM

        JavaScriptcommentsareessentialformaintaining,reading,andguidingcodeexecution.1)Single-linecommentsareusedforquickexplanations.2)Multi-linecommentsexplaincomplexlogicorprovidedetaileddocumentation.3)Inlinecommentsclarifyspecificpartsofcode.Bestpractic

        How to work with dates and times in js? How to work with dates and times in js? Jul 01, 2025 am 01:27 AM

        The following points should be noted when processing dates and time in JavaScript: 1. There are many ways to create Date objects. It is recommended to use ISO format strings to ensure compatibility; 2. Get and set time information can be obtained and set methods, and note that the month starts from 0; 3. Manually formatting dates requires strings, and third-party libraries can also be used; 4. It is recommended to use libraries that support time zones, such as Luxon. Mastering these key points can effectively avoid common mistakes.

        Why should you place  tags at the bottom of the ? Why should you place tags at the bottom of the ? Jul 02, 2025 am 01:22 AM

        PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

        JavaScript vs. Java: A Comprehensive Comparison for Developers JavaScript vs. Java: A Comprehensive Comparison for Developers Jun 20, 2025 am 12:21 AM

        JavaScriptispreferredforwebdevelopment,whileJavaisbetterforlarge-scalebackendsystemsandAndroidapps.1)JavaScriptexcelsincreatinginteractivewebexperienceswithitsdynamicnatureandDOMmanipulation.2)Javaoffersstrongtypingandobject-orientedfeatures,idealfor

        JavaScript: Exploring Data Types for Efficient Coding JavaScript: Exploring Data Types for Efficient Coding Jun 20, 2025 am 12:46 AM

        JavaScripthassevenfundamentaldatatypes:number,string,boolean,undefined,null,object,andsymbol.1)Numbersuseadouble-precisionformat,usefulforwidevaluerangesbutbecautiouswithfloating-pointarithmetic.2)Stringsareimmutable,useefficientconcatenationmethodsf

        What is event bubbling and capturing in the DOM? What is event bubbling and capturing in the DOM? Jul 02, 2025 am 01:19 AM

        Event capture and bubble are two stages of event propagation in DOM. Capture is from the top layer to the target element, and bubble is from the target element to the top layer. 1. Event capture is implemented by setting the useCapture parameter of addEventListener to true; 2. Event bubble is the default behavior, useCapture is set to false or omitted; 3. Event propagation can be used to prevent event propagation; 4. Event bubbling supports event delegation to improve dynamic content processing efficiency; 5. Capture can be used to intercept events in advance, such as logging or error processing. Understanding these two phases helps to accurately control the timing and how JavaScript responds to user operations.

        How can you reduce the payload size of a JavaScript application? How can you reduce the payload size of a JavaScript application? Jun 26, 2025 am 12:54 AM

        If JavaScript applications load slowly and have poor performance, the problem is that the payload is too large. Solutions include: 1. Use code splitting (CodeSplitting), split the large bundle into multiple small files through React.lazy() or build tools, and load it as needed to reduce the first download; 2. Remove unused code (TreeShaking), use the ES6 module mechanism to clear "dead code" to ensure that the introduced libraries support this feature; 3. Compress and merge resource files, enable Gzip/Brotli and Terser to compress JS, reasonably merge files and optimize static resources; 4. Replace heavy-duty dependencies and choose lightweight libraries such as day.js and fetch

        See all articles