File size: 1,293 Bytes
dde65e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import streamlit as st
from marp import Marp
import base64
from io import BytesIO

def main():
    st.title("Marp Slide Generator")
    
    # マークダウン入力欄
    markdown_text = st.text_area("Enter your markdown text here:", height=400)
    
    if st.button("Generate Slides"):
        # Marpオブジェクトの作成
        marp = Marp()
        
        # マークダウンからスライドを生成
        slides = marp.convert(markdown_text)
        
        # スライドを画像に変換
        images = []
        for slide in slides:
            image_data = slide.render(format="png")
            images.append(image_data)
        
        # 画像を表示
        st.subheader("Generated Slides")
        for i, image in enumerate(images):
            st.image(image, caption=f"Slide {i+1}", use_column_width=True)
            
            # 画像をダウンロード可能なリンクとして提供
            buffered = BytesIO()
            image.save(buffered, format="PNG")
            img_str = base64.b64encode(buffered.getvalue()).decode()
            href = f'<a href="data:file/png;base64,{img_str}" download="slide_{i+1}.png">Download Slide {i+1}</a>'
            st.markdown(href, unsafe_allow_html=True)

if __name__ == "__main__":
    main()