Source code for solidipes_core_plugin.viewers.pdf

import streamlit as st
from IPython.display import display
from solidipes.viewers import backends as viewer_backends
from solidipes.viewers.viewer import Viewer


[docs] class PDF(Viewer): """Viewer for pdfs""" def __init__(self, data=None, height=1000): #: Image to display self.pdf = None self.height = height super().__init__(data)
[docs] def add(self, data_container): """Replace the viewer's image""" self.check_data_compatibility(data_container) self.pdf = data_container.pdf
[docs] def show(self): if self.height is None: pdf_display = ( f'<iframe src="data:application/pdf;base64,{self.pdf}" width="100%" type="application/pdf"></iframe>' ) else: pdf_display = ( f'<iframe src="data:application/pdf;base64,{self.pdf}" width="100%" height="{self.height}"' ' type="application/pdf"></iframe>' ) if viewer_backends.current_backend == "jupyter notebook": from IPython.core.display import HTML display(HTML(pdf_display)) elif viewer_backends.current_backend == "streamlit": st.markdown(pdf_display, unsafe_allow_html=True) else: # python import subprocess import tempfile with tempfile.TemporaryFile() as tmp: tmp.write(self.pdf.decode()) tmp.flush() subprocess.call("open {tmp.name}", shell=True)