Add pptx2md converter.
parent
ad95b9aa56
commit
e0d87452da
1
Makefile
1
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue