npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

use-pdf

v0.1.2

Published

This is a simple React Hook around the amazing [@react-pdf/renderer](https://react-pdf.org/).

Downloads

5

Readme

use-pdf

This is a simple React Hook around the amazing @react-pdf/renderer.

npm version

Installation

$ npm i use-pdf

or

$ yarn add use-pdf

Usage

@react-pdf/renderer is great, you can render a PDF into an iframe using <PDFViewer/>, but to have full control over loading and error states requires that you use the BlobProvider component and a render prop like some sort of barbarian.

<BlobProvider document={document}>
  {({ loading, url, error }) => {
    if (loading) {
      return <div>Rendering PDF...</div>;
    }

    if (error) {
      return <div>Error rendering PDF</div>;
    }

    return <iframe title="PDF" src={url} />;
  }}
</BlobProvider>

But with use-pdf, you can use a React Hook like a civilized human being.

const { loading, error, url } = usePDF(document);

if (loading) {
  return <div>Rendering PDF...</div>;
}

if (error) {
  return <div>Error rendering PDF</div>;
}

return <iframe title="PDF" src={url} />;

Parameters

Here are the parameters that you can use.

| Parameter | Description | | :--------- | :------------------------------------------------------------------------------------------- | | document | A PDFDocument. See react-pdf documentation for more information. |

Note: Be sure to memoize the document sent to usePDF or it will endlessly rerender.

Return

This hook returns:

| Parameter | Description | | :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | loading | A boolean that is set to true is the PDF is busy rendering. | | error | An Error object if the PDF rendering failed. | | url | A string that represents a url suitable to pass to an iframe, a new browser tab, or whatever. This is a blob url that will be revoked when the component containing the usePDF hook is unmounted. Will be null of loading=true or there was an error. | | blob | A Blob that represents the PDF or null. Will be set if url is set. |

Example

See a working example in the /example folder. To run the example execute the following:

cd example
npm i
npm start

PDFViewer

The example above shows a Hook alternative for <PDFViewer/> and supports loading and error fallbacks (which PDFViewer does not).

PDFDownloadLink

If you're looking for a hooks replacement for <PDFDownloadLink/>, use the example code, but replace renderig the iframe with the following:

return (
  <a download="somefilename.pdf" href={results.url}>
    Download PDF
  </a>
);

License

MIT Licensed