diff --git a/streamlit_pdf_viewer/__init__.py b/streamlit_pdf_viewer/__init__.py index 857f86c6..058ae81b 100644 --- a/streamlit_pdf_viewer/__init__.py +++ b/streamlit_pdf_viewer/__init__.py @@ -7,6 +7,9 @@ import json _RELEASE = True +RENDERING_EMBED = "legacy_embed" +RENDERING_IFRAME = "legacy_iframe" +RENDERING_UNWRAP = "unwrap" if not _RELEASE: _component_func = components.declare_component( @@ -22,11 +25,14 @@ ) -def pdf_viewer(input: Union[str, Path, bytes], width: int = 700, height: int = None, key=None, +def pdf_viewer(input: Union[str, Path, bytes], + width: int = 700, + height: int = None, + key=None, annotations: list = (), pages_vertical_spacing: int = 2, annotation_outline_size: int = 1, - rendering: str = "unwrap", + rendering: str = RENDERING_UNWRAP, pages_to_render: List[int] = () ): """ @@ -64,6 +70,10 @@ def pdf_viewer(input: Union[str, Path, bytes], width: int = 700, height: int = N binary = fo.read() else: binary = input + + if rendering == RENDERING_IFRAME or rendering == RENDERING_EMBED: + if height is None: + height = "100%" base64_pdf = base64.b64encode(binary).decode('utf-8') component_value = _component_func( diff --git a/streamlit_pdf_viewer/frontend/src/PdfViewer.vue b/streamlit_pdf_viewer/frontend/src/PdfViewer.vue index 6cef61eb..8251db1a 100644 --- a/streamlit_pdf_viewer/frontend/src/PdfViewer.vue +++ b/streamlit_pdf_viewer/frontend/src/PdfViewer.vue @@ -10,10 +10,10 @@
- +
- +
Error rendering option. @@ -168,7 +168,6 @@ export default { const setFrameHeight = () => { Streamlit.setFrameHeight(props.args.height || totalHeight.value); - // Streamlit.setComponentReady(); }; onMounted(() => { @@ -177,9 +176,11 @@ export default { loadPdfs(binaryDataUrl); } setFrameHeight(); + Streamlit.setComponentReady(); }); onUpdated(() => { + // console.log("onUpdated") setFrameHeight(); }); diff --git a/tests/test_iframe_width.py b/tests/test_iframe_width.py index 37510876..5e3330db 100644 --- a/tests/test_iframe_width.py +++ b/tests/test_iframe_width.py @@ -48,7 +48,7 @@ def test_should_render_template_check_container_size(page: Page): expect(pdf_container).to_be_visible() b_box = pdf_container.bounding_box() - assert b_box['width'] == 700 + assert b_box['width'] == 500 assert b_box['height'] > 0 pdf_viewer = iframe_frame.locator('div[id="pdfViewer"]')