@@ -2,14 +2,41 @@ FROM alpine:latest AS builder-base
22
33FROM builder-base AS runner
44
5+ RUN apk add --no-cache \
6+ font-noto \
7+ font-noto-arabic \
8+ font-noto-bengali \
9+ font-noto-cjk \
10+ font-noto-devanagari \
11+ font-noto-emoji \
12+ font-noto-math \
13+ font-noto-music \
14+ font-noto-symbols \
15+ ttf-liberation \
16+ poppler-data
17+
518COPY --from=mwader/static-ffmpeg:latest /ffmpeg /usr/local/bin/
619
720RUN apk add --no-cache poppler-utils
821
22+ # ja向けフォント指定
23+ RUN \
24+ mkdir -p ~/.config/fontconfig/ &&\
25+ echo -e "<?xml version='1.0'?>\n \
26+ <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>\n \
27+ <fontconfig>\n \
28+ <alias><family>serif</family><prefer><family>Noto Serif</family><family>Noto Serif CJK JP</family></prefer></alias>\n \
29+ <alias><family>sans-serif</family><prefer><family>Noto Sans</family><family>Noto Sans CJK JP</family></prefer></alias>\n \
30+ <alias><family>monospace</family><prefer><family>Noto Sans Mono</family><family>Noto Sans Mono CJK JP</family></prefer></alias>\n \
31+ <alias><family>Ryumin</family><prefer><family>Noto Serif</family><family>Noto Serif CJK JP</family></prefer></alias>\n \
32+ <alias><family>GothicBBB</family><prefer><family>Noto Sans</family><family>Noto Sans CJK JP</family></prefer></alias>\n \
33+ </fontconfig>" > ~/.config/fontconfig/fonts.conf &&\
34+ fc-cache -f
35+
936# シェルスクリプト群の生成
1037RUN \
11- echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 1\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 1 + 9 \\ ) / 18 \\ * 18 ); fi; find *.pdf | sed 's/\\ .[^/\\ .]*\$ //' | xargs -P4 -i sh -c \" rm -f \\\" /tmp/{}/\$ {YPX}p-*.png\\\" && mkdir -p \\\" /tmp/{}\\\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \\\" {}.pdf\\\" \\\" /tmp/{}/\$ {YPX}p\\\" && ffmpeg -y -pattern_type glob -r 1/2 -i \\\" /tmp/{}/\$ {YPX}p-*.png\\\" -vf \\\" crop=min(ih*16/9\\ ,iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\\\" -c:v libx264 -r 30 -pix_fmt yuv420p \\\" {}.\$ {YPX}p.vrclt.mp4\\\" && rm -f \\\" /tmp/{}/\$ {YPX}p-*.png\\\"\" " > /usr/local/bin/allpdf2vrclt && \
12- echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 1\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 1 + 9 \\ ) / 18 \\ * 18 ); fi; find *.pdf | sed 's/\\ .[^/\\ .]*\$ //' | xargs -P4 -i sh -c \" rm -f \\\" /tmp/{}/\$ {YPX}p-*.png\\\" && mkdir -p \\\" /tmp/{}\\\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \\\" {}.pdf\\\" \\\" /tmp/{}/\$ {YPX}p\\\" && ffmpeg -y -pattern_type glob -r 1 -i \\\" /tmp/{}/\$ {YPX}p-*.png\\\" -vf \\\" crop=min(ih*16/9\\ ,iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\\\" -c:v libx264 -r 30 -pix_fmt yuv420p \\\" {}.\$ {YPX}p.unaslides.mp4\\\" && rm -f \\\" /tmp/{}/\$ {YPX}p-*.png\\\"\" " > /usr/local/bin/allpdf2unaslides && \
38+ echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 1\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 1 + 9 \\ ) / 18 \\ * 18 ); fi; find *.pdf | sed 's/\\ .[^/\\ .]*\$ //' | xargs -P4 -i sh -c \" rm -f \\\" /tmp/{}/\$ {YPX}p-*.png\\\" && mkdir -p \\\" /tmp/{}\\\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \\\" {}.pdf\\\" \\\" /tmp/{}/\$ {YPX}p\\\" && ffmpeg -y -pattern_type glob -r 1/2 -i \\\" /tmp/{}/\$ {YPX}p-*.png\\\" -vf \\\" crop=min(ih*16/9\\ ,iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\\\" -c:v libx264 -r 6 -pix_fmt yuv420p -bf 0 \\\" {}.\$ {YPX}p.vrclt.mp4\\\" && rm -f \\\" /tmp/{}/\$ {YPX}p-*.png\\\"\" " > /usr/local/bin/allpdf2vrclt && \
39+ echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 1\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 1 + 9 \\ ) / 18 \\ * 18 ); fi; find *.pdf | sed 's/\\ .[^/\\ .]*\$ //' | xargs -P4 -i sh -c \" rm -f \\\" /tmp/{}/\$ {YPX}p-*.png\\\" && mkdir -p \\\" /tmp/{}\\\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \\\" {}.pdf\\\" \\\" /tmp/{}/\$ {YPX}p\\\" && ffmpeg -y -pattern_type glob -r 1 -i \\\" /tmp/{}/\$ {YPX}p-*.png\\\" -vf \\\" crop=min(ih*16/9\\ ,iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\\\" -c:v libx264 -r 6 -pix_fmt yuv420p -bf 0 \\\" {}.\$ {YPX}p.unaslides.mp4\\\" && rm -f \\\" /tmp/{}/\$ {YPX}p-*.png\\\"\" " > /usr/local/bin/allpdf2unaslides && \
1340echo -e "#!/bin/sh\n /usr/local/bin/allpdf2vrclt 720" > /usr/local/bin/allpdf2vrclt_720p && \
1441echo -e "#!/bin/sh\n /usr/local/bin/allpdf2vrclt 1080" > /usr/local/bin/allpdf2vrclt_1080p && \
1542echo -e "#!/bin/sh\n /usr/local/bin/allpdf2vrclt 1440" > /usr/local/bin/allpdf2vrclt_1440p && \
@@ -18,10 +45,10 @@ echo -e "#!/bin/sh\n/usr/local/bin/allpdf2unaslides 720" > /usr/local/bin/allpdf
1845echo -e "#!/bin/sh\n /usr/local/bin/allpdf2unaslides 1080" > /usr/local/bin/allpdf2unaslides_1080p && \
1946echo -e "#!/bin/sh\n /usr/local/bin/allpdf2unaslides 1440" > /usr/local/bin/allpdf2unaslides_1440p && \
2047echo -e "#!/bin/sh\n /usr/local/bin/allpdf2unaslides 2160" > /usr/local/bin/allpdf2unaslides_2160p && \
21- echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 2\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 2 + 9 \\ ) / 18 \\ * 18 ); fi; rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" && mkdir -p \" /tmp/\$ 1\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \"\$ 1.pdf\" \" /tmp/\$ 1/\$ {YPX}p\" && ffmpeg -y -pattern_type glob -r 1/2 -i \" /tmp/\$ 1/\$ {YPX}p-*.png\" -vf \" crop=min(ih*16/9\, iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\" -c:v libx264 -r 30 -pix_fmt yuv420p \"\$ 1.\$ {YPX}p.vrclt.mp4\" && rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" " > /usr/local/bin/pdf2vrclt && \
48+ echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 2\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 2 + 9 \\ ) / 18 \\ * 18 ); fi; rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" && mkdir -p \" /tmp/\$ 1\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \"\$ 1.pdf\" \" /tmp/\$ 1/\$ {YPX}p\" && ffmpeg -y -pattern_type glob -r 1/2 -i \" /tmp/\$ 1/\$ {YPX}p-*.png\" -vf \" crop=min(ih*16/9\, iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\" -c:v libx264 -r 6 -pix_fmt yuv420p -bf 0 \"\$ 1.\$ {YPX}p.vrclt.mp4\" && rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" " > /usr/local/bin/pdf2vrclt && \
2249echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 2\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 2 + 9 \\ ) / 18 \\ * 18 ); fi; rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" && mkdir -p \" /tmp/\$ 1\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \"\$ 1.pdf\" \" /tmp/\$ 1/\$ {YPX}p\" && ffmpeg -y -pattern_type glob -r 1/2 -i \" /tmp/\$ 1/\$ {YPX}p-*.png\" -vf \" crop=min(ih*16/9\, iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\" -c:v libsvtav1 -qp 20 -pix_fmt yuv420p \"\$ 1.\$ {YPX}p.vrclt.mkv\" && rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" " > /usr/local/bin/pdf2mkv && \
2350echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 2\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 2 + 9 \\ ) / 18 \\ * 18 ); fi; rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" && mkdir -p \" /tmp/\$ 1\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \"\$ 1.pdf\" \" /tmp/\$ 1/\$ {YPX}p\" && ffmpeg -y -pattern_type glob -r 1/2 -i \" /tmp/\$ 1/\$ {YPX}p-*.png\" -vf \" crop=min(ih*16/9\, iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\" -c:v libvpx -crf 4 -b:v 5000000 -quality best -speed 4 -pix_fmt yuv420p \"\$ 1.\$ {YPX}p.vrclt.webm\" && rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" " > /usr/local/bin/pdf2vrclt_webm && \
24- echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 2\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 2 + 9 \\ ) / 18 \\ * 18 ); fi; rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" && mkdir -p \" /tmp/\$ 1\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \"\$ 1.pdf\" \" /tmp/\$ 1/\$ {YPX}p\" && ffmpeg -y -pattern_type glob -r 1 -i \" /tmp/\$ 1/\$ {YPX}p-*.png\" -vf \" crop=min(ih*16/9\, iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\" -c:v libx264 -r 30 -pix_fmt yuv420p \"\$ 1.\$ {YPX}p.unaslides.mp4\" && rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" " > /usr/local/bin/pdf2unaslides && \
51+ echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 2\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 2 + 9 \\ ) / 18 \\ * 18 ); fi; rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" && mkdir -p \" /tmp/\$ 1\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \"\$ 1.pdf\" \" /tmp/\$ 1/\$ {YPX}p\" && ffmpeg -y -pattern_type glob -r 1 -i \" /tmp/\$ 1/\$ {YPX}p-*.png\" -vf \" crop=min(ih*16/9\, iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\" -c:v libx264 -r 6 -pix_fmt yuv420p -bf 0 \"\$ 1.\$ {YPX}p.unaslides.mp4\" && rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" " > /usr/local/bin/pdf2unaslides && \
2552echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 2\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 2 + 9 \\ ) / 18 \\ * 18 ); fi; rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" && mkdir -p \" /tmp/\$ 1\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \"\$ 1.pdf\" \" /tmp/\$ 1/\$ {YPX}p\" && ffmpeg -y -pattern_type glob -r 1 -i \" /tmp/\$ 1/\$ {YPX}p-*.png\" -vf \" crop=min(ih*16/9\, iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\" -c:v libsvtav1 -qp 20 -pix_fmt yuv420p \"\$ 1.\$ {YPX}p.unaslides.mkv\" && rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" " > /usr/local/bin/pdf2unaslides_mkv && \
2653echo -e "#!/bin/sh\n YPX=720; if expr \"\$ 2\" : '\( [1-9][0-9]\| [1-9][0-9][0-9]\+\)\$ ' > /dev/null; then YPX=\$ (expr \\ ( \$ 2 + 9 \\ ) / 18 \\ * 18 ); fi; rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" && mkdir -p \" /tmp/\$ 1\" && pdftoppm -progress -png -scale-to-x -1 -scale-to-y \$ YPX \"\$ 1.pdf\" \" /tmp/\$ 1/\$ {YPX}p\" && ffmpeg -y -pattern_type glob -r 1 -i \" /tmp/\$ 1/\$ {YPX}p-*.png\" -vf \" crop=min(ih*16/9\, iw):ih,scale=-2:\$ {YPX}:flags=lanczos,pad=x=-2:aspect=16/9\" -c:v libvpx -crf 4 -b:v 5000000 -quality best -speed 4 -pix_fmt yuv420p \"\$ 1.\$ {YPX}p.unaslides.webm\" && rm -f \" /tmp/\$ 1/\$ {YPX}p-*.png\" " > /usr/local/bin/pdf2unaslides_webm && \
2754echo -e "#!/bin/sh\n /usr/local/bin/pdf2vrclt \"\$ 1\" 720" > /usr/local/bin/pdf2vrclt_720p && \
0 commit comments