pdf-lib icon indicating copy to clipboard operation
pdf-lib copied to clipboard

Update README.md

Open shivamMukhia opened this issue 1 year ago • 0 comments

What?

I added a new function to facilitate the download of generated PDFs in a Node.js environment. This function uses the fs module to write the PDF bytes to a file, allowing users to easily save the generated PDF on their local machine. Example code snippet:

const { PDFDocument, StandardFonts, rgb } = require('pdf-lib');
const fs = require('fs').promises; // Using promises version for async/await

// Create a new PDFDocument
async function createPDF () {
const pdfDoc = await PDFDocument.create()

// Embed the Times Roman font
const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)

// Add a blank page to the document
const page = pdfDoc.addPage()

// Get the width and height of the page
const { width, height } = page.getSize()

// Draw a string of text toward the top of the page
const fontSize = 30
page.drawText('Creating PDFs in JavaScript is awesome!', {
  x: 50,
  y: height - 4 * fontSize,
  size: fontSize,
  font: timesRomanFont,
  color: rgb(0, 0.53, 0.71),
})

// Serialize the PDFDocument to bytes (a Uint8Array)
const pdfBytes = await pdfDoc.save()


  // Save PDF bytes to a file
  await fs.writeFile('output.pdf', pdfBytes);

  console.log('PDF saved as "output.pdf"');

// For example, `pdfBytes` can be:
//   • Written to a file in Node
//   • Downloaded from the browser
//   • Rendered in an <iframe>
}
createPDF();

Why?

This PR aims to enhance the user experience by providing a convenient way to download generated PDFs in a Node.js environment. Users can now easily integrate the download functionality into their applications without having to manually handle the file-writing process.

How?

I added a new function createPDFAndDownload that encapsulates the PDF generation and download process. It uses the fs module to write the generated PDF bytes to a file named "output.pdf". Users can call this function to both generate and download a PDF in a single step.

Alternative implementations were considered, but using the fs module for simplicity and compatibility with Node.js was chosen as the most straightforward approach.

Testing?

I tested the new function by running it in a Node.js environment. I verified that the generated PDF is correctly saved as "output.pdf"

New Dependencies?

No.

Screenshots

N/A.

Suggested Reading?

No.

Anything Else?

The new function should be straightforward to use, and users can customize the filename and path as needed.

Checklist

  • [ ] I read CONTRIBUTING.md.
  • [ ] I read MAINTAINERSHIP.md#pull-requests.
  • [ ] I added/updated unit tests for my changes.
  • [ ] I added/updated integration tests for my changes.
  • [ ] I ran the integration tests.
  • [ ] I tested my changes in Node, Deno, and the browser.
  • [ ] I viewed documents produced with my changes in Adobe Acrobat, Foxit Reader, Firefox, and Chrome.
  • [ ] I added/updated doc comments for any new/modified public APIs.
  • [ ] My changes work for both new and existing PDF files.
  • [ ] I ran the linter on my changes.

shivamMukhia avatar Dec 02 '23 02:12 shivamMukhia