Spaces:
Sleeping
Sleeping
File size: 5,688 Bytes
f3a9c70 b9648f5 f3a9c70 b9648f5 f3a9c70 b9648f5 f3a9c70 b9648f5 f3a9c70 c67e5d3 f3a9c70 b9648f5 f3a9c70 c67e5d3 f3a9c70 b9648f5 4d78b95 b9648f5 5be16b9 b9648f5 f3a9c70 b9648f5 f3a9c70 b9648f5 f3a9c70 b9648f5 f3a9c70 b9648f5 f3a9c70 4d78b95 f3a9c70 f6554f2 f3a9c70 b9648f5 f3a9c70 b9648f5 f3a9c70 b9648f5 f3a9c70 4d78b95 b9648f5 |
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
import streamlit as st
from PyPDF2 import PdfReader
from concurrent.futures import ThreadPoolExecutor
from base64 import b64encode
from fpdf import FPDF
import io, string, re, math
from io import StringIO
# Importing the Fastify Class
from fast_reader import Fastify_Reader
def pdf_extract_text(pdf_docs):
'''
Basic function for extracting text from the PDFs
'''
text = ""
for pdf in pdf_docs:
pdf_reader = PdfReader(pdf)
for page in pdf_reader.pages:
text += page.extract_text()
return text
def text_to_pdf_fastify(text):
bold_text = Fastify_Reader(text).fastify()
bold_text = bold_text.encode('latin-1', 'ignore').decode('latin-1')
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size = 12)
pdf.multi_cell(0, 10, txt = bold_text, markdown=True)
return bytes(pdf.output())
def text_to_pdf(text):
text = text.encode('latin-1', 'ignore').decode('latin-1')
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size = 12)
pdf.multi_cell(0, 10, txt = text, markdown=True)
return bytes(pdf.output())
st.set_page_config(page_title="Fastify Reader",
page_icon=":books:",
layout="wide")
note_text = """
If the PDF is not being rendered by your browser, <br>
 1. Try this link - (https://akarshrajsingh7-fastify-reader.hf.space/) <br>
 2. Download the PDF and open it in a PDF viewer.
"""
with st.sidebar:
st.image("Logo.jpg")
st.markdown("<div style='text-align: center;'>How fast can you read?</div>", unsafe_allow_html=True)
tab1, tab2= st.tabs(["PDF file", "Input Text"])
with tab1:
st.header("PDF File")
uploaded_file = st.file_uploader("Upload a PDF file", type="pdf", accept_multiple_files=True)
if st.button("Submit", key="pdf"):
with st.spinner("Processing"):
text = pdf_extract_text(uploaded_file)
original_pdf = b64encode(text_to_pdf(text)).decode("utf-8")
base64_pdf = b64encode(text_to_pdf_fastify(text)).decode("utf-8")
original_display = f'<embed src="data:application/pdf;base64,{original_pdf}" width = "100%" height = 600 type="application/pdf">'
pdf_display = f'<embed src="data:application/pdf;base64,{base64_pdf}" width = "100%" height = 600 type="application/pdf">'
col1, col2, col3 = st.columns(3)
with col3:
st.download_button(label="Download Fastified PDF", data=text_to_pdf_fastify(text), file_name='output.pdf', mime='application/pdf')
col1, col2 = st.columns([1, 1], gap="small")
with col1:
with st.container(border = True):
st.markdown("<div style='text-align: center;'><strong>Original PDF viewer</strong></div>", unsafe_allow_html=True)
st.markdown(original_display, unsafe_allow_html=True)
with col2:
with st.container(border = True):
st.markdown("<div style='text-align: center;'><strong>Fastified PDF viewer</strong></div>", unsafe_allow_html=True)
st.markdown(pdf_display, unsafe_allow_html=True)
st.markdown(f"""
<div style='background-color: #FFD580; border-radius: 5px;'>
<p style='color: black;'><strong>Note</strong> - {note_text}</p>
</div>
""", unsafe_allow_html=True)
with tab2:
st.header("Input Text")
user_input = st.text_input("Enter some text")
if st.button("Submit", key="input-text"):
with st.spinner("Processing"):
text = user_input
original_pdf = b64encode(text_to_pdf(text)).decode("utf-8")
base64_pdf = b64encode(text_to_pdf_fastify(text)).decode("utf-8")
original_display = f'<embed src="data:application/pdf;base64,{original_pdf}" width = "100%" height = 600 type="application/pdf" download="original.pdf">'
pdf_display = f'<embed src="data:application/pdf;base64,{base64_pdf}" width = "100%" height = 600 type="application/pdf" download="Modified.pdf">'
col1, col2, col3 = st.columns(3)
with col3:
st.download_button(label="Download Fastified PDF", data=text_to_pdf_fastify(text), file_name='output.pdf', mime='application/pdf')
col1, col2 = st.columns([1, 1], gap="small")
with col1:
with st.container(border = True):
st.markdown("<div style='text-align: center;'><strong>Original PDF viewer</strong></div>", unsafe_allow_html=True)
st.markdown(original_display, unsafe_allow_html=True)
with col2:
with st.container(border = True):
st.markdown("<div style='text-align: center;'><strong>Fastified PDF viewer</strong></div>", unsafe_allow_html=True)
st.markdown(pdf_display, unsafe_allow_html=True)
st.markdown(f"""
<div style='background-color: #FFD580; border-radius: 5px;'>
<p style='color: black;'><strong>Note</strong> - {note_text}</p>
</div>
""", unsafe_allow_html=True)
|