| Add pptx2md converter. - pointtools - Simple point utilities to hold text prese… | |
| git clone git://bitreich.org/pointtools/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfr… | |
| Log | |
| Files | |
| Refs | |
| Tags | |
| README | |
| LICENSE | |
| --- | |
| commit e0d87452da86dd8a57838bcaa8b8c817def194b0 | |
| parent ad95b9aa5689e07c7febceddbc9db5e8574f2699 | |
| Author: Christoph Lohmann <[email protected]> | |
| Date: Sun, 13 Jun 2021 14:41:14 +0200 | |
| Add pptx2md converter. | |
| Diffstat: | |
| M Makefile | 1 + | |
| A bin/pptx2md | 55 +++++++++++++++++++++++++++++… | |
| A examples/pptx/example.pptx | 0 | |
| 3 files changed, 56 insertions(+), 0 deletions(-) | |
| --- | |
| diff --git a/Makefile b/Makefile | |
| @@ -21,6 +21,7 @@ install: | |
| install -m 755 bin/dir2point $(DESTDIR)$(PREFIX)/bin/dir2point | |
| install -m 755 bin/md2point $(DESTDIR)$(PREFIX)/bin/md2point | |
| install -m 755 bin/point2pdf $(DESTDIR)$(PREFIX)/bin/point2pdf | |
| + install -m 755 bin/pptx2md $(DESTDIR)$(PREFIX)/bin/pptx2md | |
| mkdir -p $(DESTDIR)$(MANPREFIX)/man1 | |
| install -m 644 md2point.1 $(DESTDIR)$(MANPREFIX)/man1/md2point.1 | |
| diff --git a/bin/pptx2md b/bin/pptx2md | |
| @@ -0,0 +1,55 @@ | |
| +#!/bin/sh | |
| +# | |
| +# See LICENSE for license details. | |
| +# | |
| +# This is based on: | |
| +# https://github.com/revan/pptx2md | |
| +# | |
| +# The algorithm was simplified to the essence of what the ugly | |
| +# pptx format is capable of. Microsoft amateurs are unable to use | |
| +# XML properly. | |
| +# | |
| +# Requires: xml2tsv (git://bitreich.org/xml2tsv) | |
| +# | |
| + | |
| +if [ $# -lt 1 ]; | |
| +then | |
| + printf "usage: %s file.pptx\n" "$(basename "$0")" >&2 | |
| + exit 1 | |
| +fi | |
| + | |
| +pptxfile="$1" | |
| +mdfile="$1.md" | |
| +tmpdir="$(mktemp -u)" | |
| + | |
| +unzip -oq -d "${tmpdir}" "${pptxfile}" | |
| +if [ $? -ne 0 ]; | |
| +then | |
| + printf "Failed to extract %s.\n" "${pptxfile}" | |
| + exit 1 | |
| +fi | |
| + | |
| +for slidefile in ${tmpdir}/ppt/slides/*.xml; | |
| +do | |
| + linenum=0 | |
| + cat "${slidefile}" \ | |
| + | xml2tsv 2>/dev/null \ | |
| + | grep a:r/a:t \ | |
| + | cut -s -f 2 \ | |
| + | while read -r line; | |
| + do | |
| + if [ $linenum -eq 0 ]; | |
| + then | |
| + printf "## %s\n" "${line}" >> "${mdfile}" | |
| + else | |
| + printf "%s\n" "${line}" >> "${mdfile}" | |
| + fi | |
| + linenum=1 | |
| + done | |
| + printf "\n" >> "${mdfile}" | |
| +done | |
| + | |
| + | |
| +rm -r "$tmpdir" | |
| +exit 0 | |
| + | |
| diff --git a/examples/pptx/example.pptx b/examples/pptx/example.pptx | |
| Binary files differ. |