File size: 1,807 Bytes
b966bc9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
from meutils.pipe import *
from appzoo.streamlit_app import Page
import streamlit as st
import streamlit.components.v1 as components
class MyPage(Page):
"""
https://zhuanlan.zhihu.com/p/518115802?utm_medium=social&utm_oi=1290068536690085888
"""
def main(self):
with st.form("PDF"):
file = st.file_uploader("选择待上传的PDF文件", type=['pdf', 'docx', 'xlsx'])
if st.form_submit_button('开始预览', help='先上传文件!!!'):
if file is not None:
base64_pdf = base64.b64encode(file.read()).decode('utf-8')
self.display_pdf(base64_pdf, width='100%', height=1000)
self.display_html()
def display_pdf(self, base64_pdf, width='100%', height=1000):
# https://blog.51cto.com/laok8/2395498
pdf_display = f"""<embed src="data:application/pdf;base64,{base64_pdf}" width="{width}" height="{height}" type="application/pdf">"""
# data_type = 'vnd.openxmlformats-officedocument.wordprocessingml.document'
# pdf_display = f"""<embed src="data:application/{data_type};base64,{base64_pdf}" width="{width}" height="{height}" type="application/{data_type}">"""
st.markdown(pdf_display, unsafe_allow_html=True)
def display_html(self, text='会飞的文字'):
_ = f"""
<marquee direction="down" width="100%" height="100%" behavior="alternate" style="border:solid" bgcolor="#00FF00">
<marquee behavior="alternate">
{text}
</marquee>
</marquee>
"""
st.markdown(_, unsafe_allow_html=True)
if __name__ == '__main__':
app_title = "# PDF应用"
app_info = "PDF预览"
MyPage(
app_title=app_title,
app_info=app_info,
).main()
|