Spaces:
				
			
			
	
			
			
		Sleeping
		
	
	
	
			
			
	
	
	
	
		
		
		Sleeping
		
	Update backup1.app.py
Browse files- backup1.app.py +13 -11
    	
        backup1.app.py
    CHANGED
    
    | @@ -38,6 +38,12 @@ with st.sidebar: | |
| 38 |  | 
| 39 | 
             
                show_subitems = st.checkbox("Show Sub-items (e.g., 1.1, 2.1.3)", value=True)
         | 
| 40 | 
             
                plain_text_mode = st.checkbox("Render as Plain Text (Preserve Bold Only)", value=False)
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 41 |  | 
| 42 | 
             
            pdfmetrics.registerFont(TTFont(selected_font_name, selected_font_path))
         | 
| 43 |  | 
| @@ -220,7 +226,7 @@ default_markdown = """# ๐ Deities Guide: Mythology and Moral Lessons ๐ | |
| 220 | 
             
            3. Saints/Prophets: Virtues (e.g., justice, prophecy).
         | 
| 221 | 
             
            """
         | 
| 222 |  | 
| 223 | 
            -
            def markdown_to_pdf_content(markdown_text, show_subitems=True, plain_text_mode=False):
         | 
| 224 | 
             
                lines = markdown_text.strip().split('\n')
         | 
| 225 | 
             
                pdf_content = []
         | 
| 226 |  | 
| @@ -284,15 +290,11 @@ def markdown_to_pdf_content(markdown_text, show_subitems=True, plain_text_mode=F | |
| 284 | 
             
                        pdf_content.append([current_item, sub_items])
         | 
| 285 |  | 
| 286 | 
             
                total_lines = sum(1 + len(subs) if isinstance(item, list) else 1 for item in pdf_content)
         | 
| 287 | 
            -
                 | 
| 288 | 
            -
                 | 
| 289 | 
            -
                num_columns = max(2, int(total_lines / (page_height / (base_font_size * 1.15))))
         | 
| 290 | 
            -
                num_columns = min(num_columns, 4)
         | 
| 291 | 
            -
                if num_columns % 2 != 0:
         | 
| 292 | 
            -
                    num_columns += 1
         | 
| 293 |  | 
| 294 | 
            -
                lines_per_column = total_lines / num_columns
         | 
| 295 | 
             
                columns = [[] for _ in range(num_columns)]
         | 
|  | |
| 296 | 
             
                current_line_count = 0
         | 
| 297 | 
             
                current_column = 0
         | 
| 298 |  | 
| @@ -306,7 +308,7 @@ def markdown_to_pdf_content(markdown_text, show_subitems=True, plain_text_mode=F | |
| 306 |  | 
| 307 | 
             
                return columns, total_lines, num_columns
         | 
| 308 |  | 
| 309 | 
            -
            def create_main_pdf(markdown_text, base_font_size=10, auto_size=False, show_subitems=True, plain_text_mode=False):
         | 
| 310 | 
             
                buffer = io.BytesIO()
         | 
| 311 | 
             
                doc = SimpleDocTemplate(
         | 
| 312 | 
             
                    buffer, 
         | 
| @@ -320,7 +322,7 @@ def create_main_pdf(markdown_text, base_font_size=10, auto_size=False, show_subi | |
| 320 | 
             
                styles = getSampleStyleSheet()
         | 
| 321 | 
             
                story = []
         | 
| 322 | 
             
                spacer_height = 10
         | 
| 323 | 
            -
                columns, total_lines, num_columns = markdown_to_pdf_content(markdown_text, show_subitems, plain_text_mode)
         | 
| 324 |  | 
| 325 | 
             
                if auto_size:
         | 
| 326 | 
             
                    base_font_size = max(6, min(16, base_font_size * 300 / total_lines))
         | 
| @@ -431,7 +433,7 @@ if 'markdown_content' not in st.session_state: | |
| 431 | 
             
                st.session_state.markdown_content = default_markdown
         | 
| 432 |  | 
| 433 | 
             
            with st.spinner("Generating PDF..."):
         | 
| 434 | 
            -
                pdf_bytes = create_main_pdf(st.session_state.markdown_content, base_font_size, auto_size, show_subitems, plain_text_mode)
         | 
| 435 |  | 
| 436 | 
             
            with st.container():
         | 
| 437 | 
             
                pdf_images = pdf_to_image(pdf_bytes)
         | 
|  | |
| 38 |  | 
| 39 | 
             
                show_subitems = st.checkbox("Show Sub-items (e.g., 1.1, 2.1.3)", value=True)
         | 
| 40 | 
             
                plain_text_mode = st.checkbox("Render as Plain Text (Preserve Bold Only)", value=False)
         | 
| 41 | 
            +
                
         | 
| 42 | 
            +
                num_columns = st.radio(
         | 
| 43 | 
            +
                    "Number of Columns",
         | 
| 44 | 
            +
                    options=[1, 2, 3, 4, 5, 6],
         | 
| 45 | 
            +
                    index=3
         | 
| 46 | 
            +
                )
         | 
| 47 |  | 
| 48 | 
             
            pdfmetrics.registerFont(TTFont(selected_font_name, selected_font_path))
         | 
| 49 |  | 
|  | |
| 226 | 
             
            3. Saints/Prophets: Virtues (e.g., justice, prophecy).
         | 
| 227 | 
             
            """
         | 
| 228 |  | 
| 229 | 
            +
            def markdown_to_pdf_content(markdown_text, show_subitems=True, plain_text_mode=False, font_size=10, num_columns=4):
         | 
| 230 | 
             
                lines = markdown_text.strip().split('\n')
         | 
| 231 | 
             
                pdf_content = []
         | 
| 232 |  | 
|  | |
| 290 | 
             
                        pdf_content.append([current_item, sub_items])
         | 
| 291 |  | 
| 292 | 
             
                total_lines = sum(1 + len(subs) if isinstance(item, list) else 1 for item in pdf_content)
         | 
| 293 | 
            +
                total_chars = sum(len(item) if isinstance(item, str) else len(item[0]) + sum(len(sub) for sub in item[1]) for item in pdf_content)
         | 
| 294 | 
            +
                avg_line_length = total_chars / total_lines if total_lines > 0 else 1
         | 
|  | |
|  | |
|  | |
|  | |
| 295 |  | 
|  | |
| 296 | 
             
                columns = [[] for _ in range(num_columns)]
         | 
| 297 | 
            +
                lines_per_column = total_lines / num_columns
         | 
| 298 | 
             
                current_line_count = 0
         | 
| 299 | 
             
                current_column = 0
         | 
| 300 |  | 
|  | |
| 308 |  | 
| 309 | 
             
                return columns, total_lines, num_columns
         | 
| 310 |  | 
| 311 | 
            +
            def create_main_pdf(markdown_text, base_font_size=10, auto_size=False, show_subitems=True, plain_text_mode=False, num_columns=4):
         | 
| 312 | 
             
                buffer = io.BytesIO()
         | 
| 313 | 
             
                doc = SimpleDocTemplate(
         | 
| 314 | 
             
                    buffer, 
         | 
|  | |
| 322 | 
             
                styles = getSampleStyleSheet()
         | 
| 323 | 
             
                story = []
         | 
| 324 | 
             
                spacer_height = 10
         | 
| 325 | 
            +
                columns, total_lines, num_columns = markdown_to_pdf_content(markdown_text, show_subitems, plain_text_mode, base_font_size, num_columns)
         | 
| 326 |  | 
| 327 | 
             
                if auto_size:
         | 
| 328 | 
             
                    base_font_size = max(6, min(16, base_font_size * 300 / total_lines))
         | 
|  | |
| 433 | 
             
                st.session_state.markdown_content = default_markdown
         | 
| 434 |  | 
| 435 | 
             
            with st.spinner("Generating PDF..."):
         | 
| 436 | 
            +
                pdf_bytes = create_main_pdf(st.session_state.markdown_content, base_font_size, auto_size, show_subitems, plain_text_mode, num_columns)
         | 
| 437 |  | 
| 438 | 
             
            with st.container():
         | 
| 439 | 
             
                pdf_images = pdf_to_image(pdf_bytes)
         | 
