pptx2md (947B)
1 #!/bin/sh 2 # 3 # See LICENSE for license details. 4 # 5 # This is based on: 6 # https://github.com/revan/pptx2md 7 # 8 # The algorithm was simplified to the essence of what the ugly 9 # pptx format is capable of. Microsoft amateurs are unable to use 10 # XML properly. 11 # 12 # Requires: xml2tsv (git://bitreich.org/xml2tsv) 13 # 14 15 if [ $# -lt 1 ]; 16 then 17 printf "usage: %s file.pptx\n" "$(basename "$0")" >&2 18 exit 1 19 fi 20 21 pptxfile="$1" 22 mdfile="$1.md" 23 tmpdir="$(mktemp -u)" 24 25 unzip -oq -d "${tmpdir}" "${pptxfile}" 26 if [ $? -ne 0 ]; 27 then 28 printf "Failed to extract %s.\n" "${pptxfile}" 29 exit 1 30 fi 31 32 for slidefile in ${tmpdir}/ppt/slides/*.xml; 33 do 34 linenum=0 35 cat "${slidefile}" \ 36 | xml2tsv 2>/dev/null \ 37 | grep a:r/a:t \ 38 | cut -s -f 2 \ 39 | while read -r line; 40 do 41 if [ $linenum -eq 0 ]; 42 then 43 printf "## %s\n" "${line}" >> "${mdfile}" 44 else 45 printf "%s\n" "${line}" >> "${mdfile}" 46 fi 47 linenum=1 48 done 49 printf "\n" >> "${mdfile}" 50 done 51 52 53 rm -r "$tmpdir" 54 exit 0 55