diff --git a/.bumpversion.toml b/.bumpversion.toml index 155bb928..e86f9f2f 100644 --- a/.bumpversion.toml +++ b/.bumpversion.toml @@ -1,5 +1,5 @@ [tool.bumpversion] -current_version = "0.0.19" +current_version = "0.0.20" commit = "true" tag = "true" tag_name = "v{new_version}" diff --git a/README.md b/README.md index b7d8afcd..e907bbc0 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,13 @@ You can see an [application](https://github.com/lfoppiano/structure-vision) in a ## Features - Show PDF files in a Streamlit application with a simple command - Based on the pdf.js library -- Support showing the PDF with the native pdf.js browser's viewer: "legacy" (with limitations, no annotations, no scrolling, etc..) - Visualize annotations on top of the PDF documents - Render text on top of the PDF document, allowing copy-paste - Allow to render specific pages of the PDF document - Scroll to a specific page - Scroll to a specific annotation +- Allow custom callbacks when an annotation is clicked +- Additional support showing PDF documents using the native pdf.js browser's viewer: "legacy" (with limitations, no annotations, no scrolling, etc..) ## Limitations - Tested and developed to support Firefox and Chrome. @@ -28,6 +29,16 @@ You can see an [application](https://github.com/lfoppiano/structure-vision) in a - The component is still in development, so expect some bugs and limitations - The streamlit reload at each action may render slowly for complex PDF documents +## Caveats +Here some caveats to be aware of: +- It ss mandatory to specify a `width` to show PDF document on tabs and expanders, otherwise, the viewer will not be displayed on tabs not immediately visible. +- From version 0.0.16, the behavior for managing width and height has changed: + - If only the height is specified, the PDF document will be shown in proportion with the with proportional based on the PDF dimensions. + - The possibility to show a large view of half the PDF is not available anymore (let's face it, it was not very useful). + - If you need to use all the available space and limit the height, you can encapsulate the `pdf_viewer()` into a `st.component(width:...)` setting the width. +- The `legacy` rendering is not supported on Chrome, due to security reasons. + + ## Getting started @@ -44,31 +55,24 @@ from streamlit_pdf_viewer import pdf_viewer pdf_viewer("str, path or bytes") ``` -### Caveats - -Here some caveats to be aware of: -- Is mandatory to specify a `width` to show PDF document on tabs and expanders, otherwise, the viewer will not be displayed on tabs not immediately visible. -- The `legacy` rendering is not supported on Chrome, due to security reasons. - - ### 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. | +| 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. Can set it to string percentage also. For example 90% which will make the pdf render to 90% of the container/window/screen width. If the pdf width is larger than the screen width, it will horizontally scroll. | -| 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](#annotation-format). | -| 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 `` or `