Add pptx2md converter.

master
Christoph Lohmann 2021-06-13 14:41:14 +02:00
parent ad95b9aa56
commit e0d87452da
3 changed files with 56 additions and 0 deletions

View File

@ -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

55
bin/pptx2md Executable file
View File

@ -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

BIN
examples/pptx/example.pptx Normal file

Binary file not shown.