awacke1 commited on
Commit
e1b5e77
·
verified ·
1 Parent(s): 3cfd36a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -5
app.py CHANGED
@@ -178,7 +178,7 @@ def markdown_to_pdf_content(markdown_text, add_space_before_numbered, headings_t
178
  total_lines = len(pdf_content)
179
  return pdf_content, total_lines
180
 
181
- def create_pdf(markdown_text, base_font_size, num_columns, add_space_before_numbered, headings_to_fonts, doc_title):
182
  buffer = io.BytesIO()
183
  page_width = A4[0] * 2
184
  page_height = A4[1]
@@ -225,6 +225,12 @@ def create_pdf(markdown_text, base_font_size, num_columns, add_space_before_numb
225
  if avg_line_chars > col_width / adjusted_font_size * 10:
226
  adjusted_font_size = int(col_width / (avg_line_chars / 10))
227
  adjusted_font_size = max(min_font_size, adjusted_font_size)
 
 
 
 
 
 
228
  item_style = ParagraphStyle(
229
  'ItemStyle', parent=styles['Normal'], fontName="DejaVuSans",
230
  fontSize=adjusted_font_size, leading=adjusted_font_size * 1.15, spaceAfter=1,
@@ -317,7 +323,7 @@ def pdf_to_image(pdf_bytes):
317
  return None
318
 
319
  # PDF creation and linking functions
320
- WORDS_10 = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]
321
  WORDS_20 = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
322
  "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"]
323
 
@@ -495,6 +501,7 @@ with st.sidebar:
495
  # Calculate document stats
496
  longest_line_words = 0
497
  total_lines = 0
 
498
  if 'markdown_content' in st.session_state:
499
  current_markdown = st.session_state.markdown_content
500
  lines = current_markdown.strip().split('\n')
@@ -512,10 +519,15 @@ with st.sidebar:
512
  recommended_columns = 3
513
  else:
514
  recommended_columns = 3
515
- st.markdown(f"**Document Stats**")
 
 
 
 
516
  st.write(f"- Longest Line: {longest_line_words} words")
517
  st.write(f"- Total Lines: {total_lines}")
518
  st.write(f"- Recommended Columns: {recommended_columns}")
 
519
 
520
  column_options = [2, 3, 4]
521
  num_columns = st.selectbox(
@@ -525,7 +537,7 @@ with st.sidebar:
525
  )
526
  st.info("Font size and columns adjust to fit one page.")
527
 
528
- st.markdown("### ✍️ Edit Markdown")
529
  edited_markdown = st.text_area(
530
  "Input Markdown",
531
  value=st.session_state.markdown_content,
@@ -616,7 +628,9 @@ with st.spinner("Generating PDF..."):
616
  num_columns,
617
  add_space_before_numbered,
618
  headings_to_fonts,
619
- doc_title=selected_md if selected_md else "Untitled"
 
 
620
  )
621
 
622
  with st.container():
 
178
  total_lines = len(pdf_content)
179
  return pdf_content, total_lines
180
 
181
+ def create_pdf(markdown_text, base_font_size, num_columns, add_space_before_numbered, headings_to_fonts, doc_title, longest_line_words, total_lines):
182
  buffer = io.BytesIO()
183
  page_width = A4[0] * 2
184
  page_height = A4[1]
 
225
  if avg_line_chars > col_width / adjusted_font_size * 10:
226
  adjusted_font_size = int(col_width / (avg_line_chars / 10))
227
  adjusted_font_size = max(min_font_size, adjusted_font_size)
228
+
229
+ # Adjust font size to fit one page based on longest line
230
+ if longest_line_words > 17:
231
+ font_scale = 17 / longest_line_words # Scale down from reference (17 words)
232
+ adjusted_font_size = max(min_font_size, int(adjusted_font_size * font_scale))
233
+
234
  item_style = ParagraphStyle(
235
  'ItemStyle', parent=styles['Normal'], fontName="DejaVuSans",
236
  fontSize=adjusted_font_size, leading=adjusted_font_size * 1.15, spaceAfter=1,
 
323
  return None
324
 
325
  # PDF creation and linking functions
326
+ WORDS_10 = ["one", "two", "three", "four", "five", "six", "seven", "eight", consective, "ten"]
327
  WORDS_20 = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
328
  "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"]
329
 
 
501
  # Calculate document stats
502
  longest_line_words = 0
503
  total_lines = 0
504
+ adjusted_font_size_display = base_font_size
505
  if 'markdown_content' in st.session_state:
506
  current_markdown = st.session_state.markdown_content
507
  lines = current_markdown.strip().split('\n')
 
519
  recommended_columns = 3
520
  else:
521
  recommended_columns = 3
522
+ # Adjust font size for one-page fit
523
+ if longest_line_words > 17:
524
+ font_scale = 17 / longest_line_words
525
+ adjusted_font_size_display = max(6, int(base_font_size * font_scale))
526
+ st.markdown("**Document Stats**")
527
  st.write(f"- Longest Line: {longest_line_words} words")
528
  st.write(f"- Total Lines: {total_lines}")
529
  st.write(f"- Recommended Columns: {recommended_columns}")
530
+ st.write(f"- Adjusted Font Size: {adjusted_font_size_display} points")
531
 
532
  column_options = [2, 3, 4]
533
  num_columns = st.selectbox(
 
537
  )
538
  st.info("Font size and columns adjust to fit one page.")
539
 
540
+ st.markdown("### ✍️ Edit Markdown
541
  edited_markdown = st.text_area(
542
  "Input Markdown",
543
  value=st.session_state.markdown_content,
 
628
  num_columns,
629
  add_space_before_numbered,
630
  headings_to_fonts,
631
+ doc_title=selected_md if selected_md else "Untitled",
632
+ longest_line_words=longest_line_words,
633
+ total_lines=total_lines
634
  )
635
 
636
  with st.container():