Skip to main content

Streamlit component for PDF visualisation and manipulation

Project description

License PyPI version Build Coverage Status

streamlit-pdf-viewer

Streamlit component that allows the visualisation and enrichment of PDF documents Tested on Chrome and Firefox. You can see an application in action here.

Work in progress

We are early in the development, and we appreciate new contributors.

Getting started

pip install streamlit-pdf-viewer

In your streamlit application, you can use it as:

import streamlit as st
from streamlit_pdf_viewer import pdf_viewer

pdf_viewer("str, path or bytes")

Options

Params

In the following table the list of parameters that can be provided to the pdf_viewer function:

name description
input The source of the PDF file. Accepts a file path, URL, or binary data.
width Width of the PDF viewer in pixels. It defaults to 700 pixels.
height Height of the PDF viewer in pixels. If not provided, the viewer shows the whole content.
annotations A list of annotations to be overlaid on the PDF. Format is described here.
pages_vertical_spacing The vertical space (in pixels) between each page of the PDF. Defaults to 2 pixels.
annotation_outline_size Size of the outline around each annotation in pixels. Defaults to 1 pixel.
rendering Type of rendering: unwrap (default), legacy_iframe, or legacy_embed. The default value, unwrap shows the PDF document using pdf.js, and supports the visualisation of annotations. Other values are legacy_iframe and legacy_embed which use the legacy approach of injecting the document into an <embed> or <iframe>. They allow viewing the PDF using the viewer of the browser that contains additional features we are still working to implement in this component. IMPORTANT: :warning: The "legacy" methods work only with Firefox, and do not support annotations. :warning:
pages_to_render Filter the rendering to a specific set of pages. By default, all pages are rendered.
render_text Enable a layer of text on top of the PDF document. The text may be selected and copied. NOTE to avoid breaking existing deployments, we made this optional at first, also considering that having many annotations might interfere with the copy-paste.

Annotation format

The annotations format has been derived from the Grobid's coordinate formats, which are described as a list of "bounding boxes". The annotations are expressed as a dictionary of six elements, the page, x and y indicate the top left point. The color can be expressed following the html CSS convention.

Here an example:

[
   {
      "page": 1,
      "x": 220,
      "y": 155,
      "height": 22,
      "width": 65,
      "color": "red"
   },
[...]

The example shown in our screenshot can be found here.

Developers notes

Environment

  • Python >= 3.8
  • Node.js >= 16
  • Streamlit >= 1.28.2

Configure environment for development

First, make sure that _RELEASE = False in streamlit_pdf_viewer/__init__.py. To run the component in development mode, use the following commands:

streamlit run streamlit_pdf_viewer/__init__.py

cd frontend
npm run serve

These commands will start the Streamlit application and serve the Node.js component. Please make sure you're in the correct directory before running these commands.

Integrate into a streamlit application

  1. Build the frontend part:

    cd frontend
    export NODE_OPTIONS=--openssl-legacy-provider
    npm run build 
    
  2. Make sure that _RELEASE = True in streamlit_pdf_viewer/__init__.py.

  3. move to the streamlit_application and run

    pip install -e {path of component}
    

Release

bump-my-version bump patch | minor | major
git push
git push --tags 

Acknowledgement

The project was initiated at the National Institute for Materials Science (NIMS) in Japan. Currently, the development is possible thanks to ScienciLAB. Main collaborator: Tomoya Mato very helpful to attenuate the pain of Javascript.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streamlit_pdf_viewer-0.0.16.dev0.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

File details

Details for the file streamlit_pdf_viewer-0.0.16.dev0.tar.gz.

File metadata

File hashes

Hashes for streamlit_pdf_viewer-0.0.16.dev0.tar.gz
Algorithm Hash digest
SHA256 a816e7856b2441256b203fbb8ee55b606ac85f4580bce9a237d4c4ca2ebae03a
MD5 14d5295db3e7426990b49fb1cca1ca0e
BLAKE2b-256 52b01d55b6704cfd0b69a60c393dbe69449db92ec888f004d1621e97df9ca5ce

See more details on using hashes here.

File details

Details for the file streamlit_pdf_viewer-0.0.16.dev0-py3-none-any.whl.

File metadata

File hashes

Hashes for streamlit_pdf_viewer-0.0.16.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 1205b47e6581e7a3ab8bc11379b2a0afdb43fe41c7d953391a267e99a5d23fec
MD5 cf2d89de93d002a6f960604b48ef6a34
BLAKE2b-256 b7c3248287d5d2775bd0179330d420cf6b9b03311ca75a1beee6dfeee8bfacb3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page