Update app.py
Browse files
app.py
CHANGED
|
@@ -25,6 +25,7 @@ DEFAULT_STYLES = {
|
|
| 25 |
"text_color": "#333333",
|
| 26 |
"background_color": "#ffffff",
|
| 27 |
"code_bg_color": "#f4f4f4",
|
|
|
|
| 28 |
"custom_css": ""
|
| 29 |
}
|
| 30 |
|
|
@@ -49,6 +50,7 @@ def index():
|
|
| 49 |
"text_color": request.form.get("text_color", DEFAULT_STYLES["text_color"]),
|
| 50 |
"background_color": request.form.get("background_color", DEFAULT_STYLES["background_color"]),
|
| 51 |
"code_bg_color": request.form.get("code_bg_color", DEFAULT_STYLES["code_bg_color"]),
|
|
|
|
| 52 |
"custom_css": request.form.get("custom_css", DEFAULT_STYLES["custom_css"])
|
| 53 |
}
|
| 54 |
include_fontawesome = "include_fontawesome" in request.form
|
|
@@ -82,11 +84,6 @@ def index():
|
|
| 82 |
padding: 25px;
|
| 83 |
display: inline-block; /* Helps imgkit to crop correctly */
|
| 84 |
}}
|
| 85 |
-
pre, code {{
|
| 86 |
-
background: {styles['code_bg_color']};
|
| 87 |
-
padding: 10px;
|
| 88 |
-
border-radius: 5px;
|
| 89 |
-
}}
|
| 90 |
table {{
|
| 91 |
border-collapse: collapse;
|
| 92 |
width: 100%;
|
|
@@ -103,6 +100,36 @@ def index():
|
|
| 103 |
max-width: 100%;
|
| 104 |
height: auto;
|
| 105 |
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
/* User-defined custom CSS */
|
| 107 |
{styles['custom_css']}
|
| 108 |
</style>
|
|
@@ -167,15 +194,15 @@ def index():
|
|
| 167 |
h1 { text-align: center; color: #333; }
|
| 168 |
form { background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
|
| 169 |
textarea { width: 100%; height: 300px; margin-bottom: 10px; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px; padding: 10px; }
|
| 170 |
-
.controls { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px; }
|
| 171 |
-
.main-actions
|
| 172 |
fieldset { border: 1px solid #ddd; padding: 15px; border-radius: 5px; margin-top: 20px; }
|
| 173 |
-
legend { font-weight: bold; color: #555; }
|
| 174 |
.style-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 15px; }
|
| 175 |
.style-grid > div { display: flex; flex-direction: column; }
|
| 176 |
-
label { margin-bottom: 5px; color: #666; }
|
| 177 |
select, input[type="number"], input[type="color"], input[type="text"] { padding: 8px; border: 1px solid #ccc; border-radius: 4px; }
|
| 178 |
-
button { padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; }
|
| 179 |
.generate-btn { background-color: #007BFF; color: white; }
|
| 180 |
.generate-btn:hover { background-color: #0056b3; }
|
| 181 |
.download-btn { background-color: #28a745; color: white; }
|
|
@@ -188,7 +215,7 @@ def index():
|
|
| 188 |
<body>
|
| 189 |
<h1>Advanced Markdown to PNG/HTML Converter</h1>
|
| 190 |
<form method="post">
|
| 191 |
-
<textarea name="markdown_text" placeholder="Paste your Markdown here...">{{
|
| 192 |
<div class="info">
|
| 193 |
<b>Tip:</b> To include images, use full public URLs (e.g., `https://.../image.png`).
|
| 194 |
To use icons, check "Include Font Awesome" below and use tags like `<i class="fa-solid fa-star"></i>`.
|
|
@@ -223,6 +250,10 @@ def index():
|
|
| 223 |
<label for="code_bg_color">Code BG Color:</label>
|
| 224 |
<input type="color" id="code_bg_color" name="code_bg_color" value="{{ styles.code_bg_color }}">
|
| 225 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 226 |
</div>
|
| 227 |
<div>
|
| 228 |
<input type="checkbox" id="include_fontawesome" name="include_fontawesome" {% if include_fontawesome %}checked{% endif %}>
|
|
|
|
| 25 |
"text_color": "#333333",
|
| 26 |
"background_color": "#ffffff",
|
| 27 |
"code_bg_color": "#f4f4f4",
|
| 28 |
+
"code_padding": "15", # Default padding for code blocks
|
| 29 |
"custom_css": ""
|
| 30 |
}
|
| 31 |
|
|
|
|
| 50 |
"text_color": request.form.get("text_color", DEFAULT_STYLES["text_color"]),
|
| 51 |
"background_color": request.form.get("background_color", DEFAULT_STYLES["background_color"]),
|
| 52 |
"code_bg_color": request.form.get("code_bg_color", DEFAULT_STYLES["code_bg_color"]),
|
| 53 |
+
"code_padding": request.form.get("code_padding", DEFAULT_STYLES["code_padding"]),
|
| 54 |
"custom_css": request.form.get("custom_css", DEFAULT_STYLES["custom_css"])
|
| 55 |
}
|
| 56 |
include_fontawesome = "include_fontawesome" in request.form
|
|
|
|
| 84 |
padding: 25px;
|
| 85 |
display: inline-block; /* Helps imgkit to crop correctly */
|
| 86 |
}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
table {{
|
| 88 |
border-collapse: collapse;
|
| 89 |
width: 100%;
|
|
|
|
| 100 |
max-width: 100%;
|
| 101 |
height: auto;
|
| 102 |
}}
|
| 103 |
+
|
| 104 |
+
/* --- Enhanced Code Block Styling --- */
|
| 105 |
+
|
| 106 |
+
/* Style for the code block container */
|
| 107 |
+
pre {{
|
| 108 |
+
background: {styles['code_bg_color']};
|
| 109 |
+
padding: {styles['code_padding']}px;
|
| 110 |
+
border-radius: 5px;
|
| 111 |
+
white-space: pre-wrap; /* Wrap long lines of code */
|
| 112 |
+
word-wrap: break-word; /* Break long words if necessary */
|
| 113 |
+
}}
|
| 114 |
+
|
| 115 |
+
/* Style for inline `code` snippets */
|
| 116 |
+
code {{
|
| 117 |
+
background: {styles['code_bg_color']};
|
| 118 |
+
padding: 0.2em 0.4em;
|
| 119 |
+
margin: 0;
|
| 120 |
+
font-size: 85%;
|
| 121 |
+
border-radius: 3px;
|
| 122 |
+
}}
|
| 123 |
+
|
| 124 |
+
/* Reset styling for <code> inside <pre> to avoid double-styling */
|
| 125 |
+
pre > code {{
|
| 126 |
+
padding: 0;
|
| 127 |
+
margin: 0;
|
| 128 |
+
font-size: inherit;
|
| 129 |
+
background: transparent;
|
| 130 |
+
border-radius: 0;
|
| 131 |
+
}}
|
| 132 |
+
|
| 133 |
/* User-defined custom CSS */
|
| 134 |
{styles['custom_css']}
|
| 135 |
</style>
|
|
|
|
| 194 |
h1 { text-align: center; color: #333; }
|
| 195 |
form { background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
|
| 196 |
textarea { width: 100%; height: 300px; margin-bottom: 10px; box-sizing: border-box; border: 1px solid #ccc; border-radius: 4px; padding: 10px; }
|
| 197 |
+
.controls { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px; margin-top: 20px; }
|
| 198 |
+
.main-actions { display: flex; flex-wrap: wrap; gap: 15px; align-items: center; }
|
| 199 |
fieldset { border: 1px solid #ddd; padding: 15px; border-radius: 5px; margin-top: 20px; }
|
| 200 |
+
legend { font-weight: bold; color: #555; padding: 0 10px; }
|
| 201 |
.style-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 15px; }
|
| 202 |
.style-grid > div { display: flex; flex-direction: column; }
|
| 203 |
+
label { margin-bottom: 5px; color: #666; font-size: 14px; }
|
| 204 |
select, input[type="number"], input[type="color"], input[type="text"] { padding: 8px; border: 1px solid #ccc; border-radius: 4px; }
|
| 205 |
+
button { padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; transition: background-color 0.2s; }
|
| 206 |
.generate-btn { background-color: #007BFF; color: white; }
|
| 207 |
.generate-btn:hover { background-color: #0056b3; }
|
| 208 |
.download-btn { background-color: #28a745; color: white; }
|
|
|
|
| 215 |
<body>
|
| 216 |
<h1>Advanced Markdown to PNG/HTML Converter</h1>
|
| 217 |
<form method="post">
|
| 218 |
+
<textarea name="markdown_text" placeholder="Paste your Markdown here...">{{ markdown_text }}</textarea>
|
| 219 |
<div class="info">
|
| 220 |
<b>Tip:</b> To include images, use full public URLs (e.g., `https://.../image.png`).
|
| 221 |
To use icons, check "Include Font Awesome" below and use tags like `<i class="fa-solid fa-star"></i>`.
|
|
|
|
| 250 |
<label for="code_bg_color">Code BG Color:</label>
|
| 251 |
<input type="color" id="code_bg_color" name="code_bg_color" value="{{ styles.code_bg_color }}">
|
| 252 |
</div>
|
| 253 |
+
<div>
|
| 254 |
+
<label for="code_padding">Code Padding (px):</label>
|
| 255 |
+
<input type="number" id="code_padding" name="code_padding" value="{{ styles.code_padding }}">
|
| 256 |
+
</div>
|
| 257 |
</div>
|
| 258 |
<div>
|
| 259 |
<input type="checkbox" id="include_fontawesome" name="include_fontawesome" {% if include_fontawesome %}checked{% endif %}>
|