Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -88,17 +88,17 @@ def create_print_layout(data, date_str):
|
|
| 88 |
if data is None or data.empty:
|
| 89 |
return None
|
| 90 |
|
| 91 |
-
# 创建PNG图像
|
| 92 |
png_fig = plt.figure(figsize=(8.27, 11.69), dpi=300)
|
| 93 |
png_ax = png_fig.add_subplot(111)
|
| 94 |
png_ax.set_axis_off()
|
|
|
|
|
|
|
| 95 |
|
| 96 |
-
# 创建PDF图像 - 使用A4纸张大小
|
| 97 |
-
# 增加图形大小以最大化利用A4纸张空间
|
| 98 |
pdf_fig = plt.figure(figsize=(8.27, 11.69), dpi=300)
|
| 99 |
pdf_ax = pdf_fig.add_subplot(111)
|
| 100 |
pdf_ax.set_axis_off()
|
| 101 |
-
|
| 102 |
# 为PDF设置更小的边距
|
| 103 |
pdf_fig.subplots_adjust(left=0.02, right=0.98, top=0.98, bottom=0.02)
|
| 104 |
|
|
@@ -106,8 +106,8 @@ def create_print_layout(data, date_str):
|
|
| 106 |
def process_figure(fig, ax, is_pdf=False):
|
| 107 |
# Pre-load fonts
|
| 108 |
date_font = get_font(12)
|
| 109 |
-
#
|
| 110 |
-
font_size_multiplier = 1.
|
| 111 |
movie_font_size = 14 * font_size_multiplier
|
| 112 |
hall_font_size = movie_font_size * 0.8
|
| 113 |
hall_font = get_font(hall_font_size)
|
|
@@ -119,7 +119,7 @@ def create_print_layout(data, date_str):
|
|
| 119 |
halls = sorted(data['Hall'].unique(), key=lambda h: int(h.replace('号','')) if h else 0)
|
| 120 |
|
| 121 |
total_lines = sum(len(data[data['Hall'] == hall]) for hall in halls) + (len(halls) - 1)
|
| 122 |
-
available_height = 0.98 - 0.
|
| 123 |
line_spacing = available_height / total_lines if total_lines > 0 else 0.04
|
| 124 |
y_position = 0.98
|
| 125 |
|
|
@@ -167,9 +167,9 @@ def create_print_layout(data, date_str):
|
|
| 167 |
# 处理PDF图形
|
| 168 |
process_figure(pdf_fig, pdf_ax, is_pdf=True)
|
| 169 |
|
| 170 |
-
# 保存PNG图像
|
| 171 |
png_buffer = io.BytesIO()
|
| 172 |
-
png_fig.savefig(png_buffer, format='png', bbox_inches='tight', pad_inches=0.
|
| 173 |
png_buffer.seek(0)
|
| 174 |
image_base64 = base64.b64encode(png_buffer.getvalue()).decode()
|
| 175 |
plt.close(png_fig)
|
|
@@ -194,15 +194,10 @@ def display_pdf(base64_pdf):
|
|
| 194 |
"""
|
| 195 |
return pdf_display
|
| 196 |
|
| 197 |
-
def get_download_link(base64_data, file_type, filename):
|
| 198 |
-
# 创建下载链接
|
| 199 |
-
href = f'<a href="{base64_data}" download="{filename}">下载{file_type}文件</a>'
|
| 200 |
-
return href
|
| 201 |
-
|
| 202 |
st.set_page_config(page_title="LED 屏幕时间表打印", layout="wide")
|
| 203 |
st.title("LED 屏幕时间表打印")
|
| 204 |
|
| 205 |
-
uploaded_file = st.file_uploader("选择打开【放映时间核对表.xls】文件", type=["xls"
|
| 206 |
|
| 207 |
if uploaded_file:
|
| 208 |
with st.spinner("正在处理中,请稍候..."):
|
|
@@ -215,13 +210,10 @@ if uploaded_file:
|
|
| 215 |
|
| 216 |
with tab1:
|
| 217 |
st.image(output['png'], use_container_width=True)
|
| 218 |
-
st.markdown(get_download_link(output['png'], "PNG", f"LED屏幕时间表_{date_str}.png"), unsafe_allow_html=True)
|
| 219 |
|
| 220 |
with tab2:
|
| 221 |
st.markdown(display_pdf(output['pdf']), unsafe_allow_html=True)
|
| 222 |
-
st.markdown(get_download_link(output['pdf'], "PDF", f"LED屏幕时间表_{date_str}.pdf"), unsafe_allow_html=True)
|
| 223 |
else:
|
| 224 |
st.error("无法处理文件,请检查文件格式或内容是否正确。")
|
| 225 |
|
| 226 |
-
|
| 227 |
|
|
|
|
| 88 |
if data is None or data.empty:
|
| 89 |
return None
|
| 90 |
|
| 91 |
+
# 创建PNG图像 - 使用A4纸张大小并最大化内容
|
| 92 |
png_fig = plt.figure(figsize=(8.27, 11.69), dpi=300)
|
| 93 |
png_ax = png_fig.add_subplot(111)
|
| 94 |
png_ax.set_axis_off()
|
| 95 |
+
# 为PNG设置更小的边距以最大化内容
|
| 96 |
+
png_fig.subplots_adjust(left=0.02, right=0.98, top=0.98, bottom=0.02)
|
| 97 |
|
| 98 |
+
# 创建PDF图像 - 使用A4纸张大小
|
|
|
|
| 99 |
pdf_fig = plt.figure(figsize=(8.27, 11.69), dpi=300)
|
| 100 |
pdf_ax = pdf_fig.add_subplot(111)
|
| 101 |
pdf_ax.set_axis_off()
|
|
|
|
| 102 |
# 为PDF设置更小的边距
|
| 103 |
pdf_fig.subplots_adjust(left=0.02, right=0.98, top=0.98, bottom=0.02)
|
| 104 |
|
|
|
|
| 106 |
def process_figure(fig, ax, is_pdf=False):
|
| 107 |
# Pre-load fonts
|
| 108 |
date_font = get_font(12)
|
| 109 |
+
# 使用更大的字体以最大化利用纸张空间
|
| 110 |
+
font_size_multiplier = 1.2
|
| 111 |
movie_font_size = 14 * font_size_multiplier
|
| 112 |
hall_font_size = movie_font_size * 0.8
|
| 113 |
hall_font = get_font(hall_font_size)
|
|
|
|
| 119 |
halls = sorted(data['Hall'].unique(), key=lambda h: int(h.replace('号','')) if h else 0)
|
| 120 |
|
| 121 |
total_lines = sum(len(data[data['Hall'] == hall]) for hall in halls) + (len(halls) - 1)
|
| 122 |
+
available_height = 0.98 - 0.02 # 增加可用高度
|
| 123 |
line_spacing = available_height / total_lines if total_lines > 0 else 0.04
|
| 124 |
y_position = 0.98
|
| 125 |
|
|
|
|
| 167 |
# 处理PDF图形
|
| 168 |
process_figure(pdf_fig, pdf_ax, is_pdf=True)
|
| 169 |
|
| 170 |
+
# 保存PNG图像 - 使用最小边距以最大化内容
|
| 171 |
png_buffer = io.BytesIO()
|
| 172 |
+
png_fig.savefig(png_buffer, format='png', bbox_inches='tight', pad_inches=0.05)
|
| 173 |
png_buffer.seek(0)
|
| 174 |
image_base64 = base64.b64encode(png_buffer.getvalue()).decode()
|
| 175 |
plt.close(png_fig)
|
|
|
|
| 194 |
"""
|
| 195 |
return pdf_display
|
| 196 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 197 |
st.set_page_config(page_title="LED 屏幕时间表打印", layout="wide")
|
| 198 |
st.title("LED 屏幕时间表打印")
|
| 199 |
|
| 200 |
+
uploaded_file = st.file_uploader("选择打开【放映时间核对表.xls】文件", accept_multiple_files=False, type=["xls"])
|
| 201 |
|
| 202 |
if uploaded_file:
|
| 203 |
with st.spinner("正在处理中,请稍候..."):
|
|
|
|
| 210 |
|
| 211 |
with tab1:
|
| 212 |
st.image(output['png'], use_container_width=True)
|
|
|
|
| 213 |
|
| 214 |
with tab2:
|
| 215 |
st.markdown(display_pdf(output['pdf']), unsafe_allow_html=True)
|
|
|
|
| 216 |
else:
|
| 217 |
st.error("无法处理文件,请检查文件格式或内容是否正确。")
|
| 218 |
|
|
|
|
| 219 |
|