Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update README.md #1560

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Update README.md #1560

wants to merge 1 commit into from

Conversation

shivamMukhia
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant