| pptx2md - pointtools - Simple point utilities to hold text presentations. | |
| git clone git://bitreich.org/pointtools/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfr… | |
| Log | |
| Files | |
| Refs | |
| Tags | |
| README | |
| LICENSE | |
| --- | |
| 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 |