awacke1 commited on
Commit
2ba4719
·
verified ·
1 Parent(s): 03190a6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -4
app.py CHANGED
@@ -158,18 +158,35 @@ def apply_emoji_font(text, emoji_font):
158
  combined_text = before + f'<a href="{url}">{label}</a>' + after
159
  return combined_text
160
 
161
- def markdown_to_pdf_content(markdown_text, render_with_bold, auto_bold_numbers):
162
  lines = markdown_text.strip().split('\n')
163
  pdf_content = []
164
  number_pattern = re.compile(r'^\d+\.\s')
 
 
 
 
165
  for line in lines:
166
  line = line.strip()
167
  if not line or line.startswith('# '):
168
  continue
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  line = detect_and_convert_links(line)
170
  if render_with_bold:
171
  line = re.sub(r'\*\*(.*?)\*\*', r'<b>\1</b>', line)
172
- if auto_bold_numbers and number_pattern.match(line):
173
  if not (line.startswith("<b>") and line.endswith("</b>")):
174
  if "<b>" in line and "</b>" in line:
175
  line = re.sub(r'</?b>', '', line)
@@ -180,7 +197,7 @@ def markdown_to_pdf_content(markdown_text, render_with_bold, auto_bold_numbers):
180
  total_lines = len(pdf_content)
181
  return pdf_content, total_lines
182
 
183
- def create_pdf(markdown_text, base_font_size, render_with_bold, auto_bold_numbers, enlarge_numbered, num_columns):
184
  buffer = io.BytesIO()
185
  page_width = A4[0] * 2
186
  page_height = A4[1]
@@ -312,6 +329,7 @@ with st.sidebar:
312
  render_with_bold = st.checkbox("Render with Bold Formatting (remove ** markers)", value=True, key="render_with_bold")
313
  auto_bold_numbers = st.checkbox("Auto Bold Numbered Lines", value=True, key="auto_bold_numbers")
314
  enlarge_numbered = st.checkbox("Enlarge Font Size for Numbered Lines", value=True, key="enlarge_numbered")
 
315
  # Add AutoColumns option to automatically determine column count based on line length
316
  auto_columns = st.checkbox("AutoColumns", value=False, key="auto_columns")
317
 
@@ -393,7 +411,7 @@ with st.sidebar:
393
  )
394
 
395
  with st.spinner("Generating PDF..."):
396
- pdf_bytes = create_pdf(st.session_state.markdown_content, base_font_size, render_with_bold, auto_bold_numbers, enlarge_numbered, num_columns)
397
 
398
  with st.container():
399
  pdf_images = pdf_to_image(pdf_bytes)
 
158
  combined_text = before + f'<a href="{url}">{label}</a>' + after
159
  return combined_text
160
 
161
+ def markdown_to_pdf_content(markdown_text, render_with_bold, auto_bold_numbers, add_space_before_numbered):
162
  lines = markdown_text.strip().split('\n')
163
  pdf_content = []
164
  number_pattern = re.compile(r'^\d+\.\s')
165
+
166
+ # Track if we've seen the first numbered line already
167
+ first_numbered_seen = False
168
+
169
  for line in lines:
170
  line = line.strip()
171
  if not line or line.startswith('# '):
172
  continue
173
+
174
+ # Check if this is a numbered line
175
+ is_numbered_line = number_pattern.match(line) is not None
176
+
177
+ # Add a blank line before numbered lines (except the first one with "1.")
178
+ if add_space_before_numbered and is_numbered_line:
179
+ # Only add space if this isn't the first numbered line
180
+ if first_numbered_seen and not line.startswith("1."):
181
+ pdf_content.append("") # Add an empty line
182
+ # Mark that we've seen a numbered line
183
+ if not first_numbered_seen:
184
+ first_numbered_seen = True
185
+
186
  line = detect_and_convert_links(line)
187
  if render_with_bold:
188
  line = re.sub(r'\*\*(.*?)\*\*', r'<b>\1</b>', line)
189
+ if auto_bold_numbers and is_numbered_line:
190
  if not (line.startswith("<b>") and line.endswith("</b>")):
191
  if "<b>" in line and "</b>" in line:
192
  line = re.sub(r'</?b>', '', line)
 
197
  total_lines = len(pdf_content)
198
  return pdf_content, total_lines
199
 
200
+ def create_pdf(markdown_text, base_font_size, render_with_bold, auto_bold_numbers, enlarge_numbered, num_columns, add_space_before_numbered):
201
  buffer = io.BytesIO()
202
  page_width = A4[0] * 2
203
  page_height = A4[1]
 
329
  render_with_bold = st.checkbox("Render with Bold Formatting (remove ** markers)", value=True, key="render_with_bold")
330
  auto_bold_numbers = st.checkbox("Auto Bold Numbered Lines", value=True, key="auto_bold_numbers")
331
  enlarge_numbered = st.checkbox("Enlarge Font Size for Numbered Lines", value=True, key="enlarge_numbered")
332
+ add_space_before_numbered = st.checkbox("Add Space Ahead of Numbered Lines", value=False, key="add_space_before_numbered")
333
  # Add AutoColumns option to automatically determine column count based on line length
334
  auto_columns = st.checkbox("AutoColumns", value=False, key="auto_columns")
335
 
 
411
  )
412
 
413
  with st.spinner("Generating PDF..."):
414
+ pdf_bytes = create_pdf(st.session_state.markdown_content, base_font_size, render_with_bold, auto_bold_numbers, enlarge_numbered, num_columns, add_space_before_numbered)
415
 
416
  with st.container():
417
  pdf_images = pdf_to_image(pdf_bytes)