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

Error UPNG.decode when embedding a PNG #85

Open
2 tasks done
sameer-roofr opened this issue Jan 17, 2025 · 2 comments
Open
2 tasks done

Error UPNG.decode when embedding a PNG #85

sameer-roofr opened this issue Jan 17, 2025 · 2 comments
Labels
bug Something isn't working needs-triage

Comments

@sameer-roofr
Copy link

sameer-roofr commented Jan 17, 2025

What were you trying to do?

I have a simple REST API which takes a base64 image (png/jpg) and embeds that on a pdf. I am using yarn as a package manager, and Node v20.13.1, TypeScript, and ExpressJS as tech stack.

How did you attempt to do it?

Here's a sample code which is exactly similar to one of the example provided in the README.md
const { PDFDocument, rgb } = PDFLib

async function embedImage() {
  const pngUrl =
    "data:image/png;base64,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"
  const pngImageBytes = await fetch(pngUrl).then((res) => res.arrayBuffer())
  const pdfDoc = await PDFDocument.create()
  const pngImage = await pdfDoc.embedPng(pngImageBytes)
  const pngDims = pngImage.scale(0.5)
  const page = pdfDoc.addPage()

  page.drawImage(pngImage, {
    x: page.getWidth() / 2 - pngDims.width / 2,
    y: page.getHeight() / 2 - pngDims.height,
    width: pngDims.width,
    height: pngDims.height,
  })

  const pdfBytes = await pdfDoc.save()

  download(
    pdfBytes,
    "pdf-lib_image_embedding_example.pdf",
    "application/pdf",
  )
}

What actually happened?

The error happens on this line pdfDoc.embedPng(imageBytes)

There's a UPNG.decode is not a function error when I am embedding a png (ArrayBuffers) on the page.

What did you expect to happen?

I expect the image to be embeded into the pdf at the given co-ordinates without any errors.

How can we reproduce the issue?

I have shared the code above. Would be happy to provide more info if needed
CodeSandbox if that helps

Version

2.2.4

What environment are you running pdf-lib in?

Node

Checklist

  • My report includes a Short, Self Contained, Correct (Compilable) Example.
  • I have attached all PDFs, images, and other files needed to run my SSCCE.

Additional Notes

No response

@sameer-roofr sameer-roofr added bug Something isn't working needs-triage labels Jan 17, 2025
@sameer-roofr
Copy link
Author

I think this is because of UPNG is CommonJS and I have ESM

@Sharcoux
Copy link
Collaborator

Should probably be tracked here: #24

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working needs-triage
Projects
None yet
Development

No branches or pull requests

2 participants