J
jovee
Ambitioniertes Mitglied
- 13
Da ich auf Linux umgestiegen bin, habe ich mein Batch-Skript (https://www.android-hilfe.de/forum/...notes-thread.344035-page-34.html#post-7547459) zum erstellen LN-Notizbüchern am PC in Bash-Script umgeschrieben und ein paar Optionen hinzugefügt.
Einfach hier runter laden
https://app.box.com/s/774dkdf0xb7nco0jzc4u
dann folgendes ausführen
fertig
dann kann man überall im terminal
für die Hilfe eingeben
Es werden folgende Pakete benötigt
1. mudf-tools (pdf -> png)
2. poppler-utils (pdfinfo und pdf->txt)
3. imagemagick (bestimmen von Auflösung der PNGs)
4. zip (ZIP-Archiv erstellen)
Wer will kann auch hier den Code kopieren
Es wird nicht überprüft ob die Parameter korrekt sind. Man kann z.B. Seiten in Auflösung von 10000x1000px erstellen. Da bitte aufpassen.
Würde mich über Feedback freuen.
Einfach hier runter laden
https://app.box.com/s/774dkdf0xb7nco0jzc4u
dann folgendes ausführen
Code:
sudo chmod +x toln
sudo mv toln /usr/local/bin/
dann kann man überall im terminal
Code:
toln -h
Es werden folgende Pakete benötigt
1. mudf-tools (pdf -> png)
2. poppler-utils (pdfinfo und pdf->txt)
3. imagemagick (bestimmen von Auflösung der PNGs)
4. zip (ZIP-Archiv erstellen)
Wer will kann auch hier den Code kopieren
Code:
#!/bin/bash
# ----- variables default---------------------------------
text=true;
dpi=200
resw=3650
resh=3650
opath="$(pwd)/"
# -------------------------------------------------------
if ! $(command -v mudraw >/dev/null 2>&1 ); then
echo $(basename $0) require mudraw
echo to install mudraw run \"sudo apt-get install mupdf-tools\"
exit 2
fi
if ! $(command -v pdfinfo >/dev/null 2>&1 ); then
echo $(basename $0) require pdfinfo
echo to install pdfinfo run \"sudo apt-get install poppler-utils\"
exit 2
fi
if ! $(command -v pdftotext >/dev/null 2>&1 ); then
echo $(basename $0) require dftotext
echo to install pdftotext run \"sudo apt-get install poppler-utils\"
exit 2
fi
if ! $(command -v identify >/dev/null 2>&1 ); then
echo $(basename $0) require identify
echo to install identify run \"sudo apt-get install imagemagick\"
exit 2
fi
if ! $(command -v zip >/dev/null 2>&1 ); then
echo $(basename $0) require zip
echo to install zip run \"sudo apt-get install zip\"
exit 2
fi
# ----- subfunctions ------------------------------
phelp(){
echo -e "help for script $0"
echo -e "usage: $0 [options] <file|folder>"
echo -e " file: is a pdf file"
echo -e " folder: is a folder with several pdf files"
echo
echo -e " -h\t\tshow help"
echo -e " -t\t\tsave text in the text layer"
echo -e " -r <int>x<int>\tWxH: W is max width in px, H is max hight in px"
echo -e "\t\tdefault is 3650x3650 (max for LN)"
echo -e "\t\tthis make only sense if size with -r is larger"
echo -e " -d <int>\tdensity dpi"
echo -e "\t\tdefault is 200"
echo -e " -p <str>\tpath fot output zip-file"
echo -e "\t\tdefault is current path"
echo
exit 0
}
lnconvert(){
pdf=$(basename "$*")
pdfname=$folder/${pdf%%.*}
mkdir /tmp/ln/"$pdfname"
cpdf=$(echo "$*" | tr -s "/")
echo
echo " converting $cpdf"
mudraw -i -r $dpi -w $resw -h $resh -o /tmp/ln/"$pdfname"/page%d.png "$cpdf" 2>/dev/null
echo " done"
tmpfolder=$(echo "/tmp/ln/$pdfname/" | tr -s "/")
w=$(identify -format "%[fx:w]" /tmp/ln/"$pdfname"/page1.png)
h=$(identify -format "%[fx:h]" /tmp/ln/"$pdfname"/page1.png)
if $text ; then getText "$cpdf"; fi
createxml $pfad
}
getText(){
echo
echo " extract text ..."
npages=$(pdfinfo "$cpdf" | grep -i pages | grep -o '[0-9]\+$')
for i in $(seq 1 $npages); do
pdftotext -nopgbrk -layout -f $i -l $i "$cpdf" /tmp/ln/"$pdfname"/text$i.txt
done
echo " done"
}
createxml(){
UUID=$(cat /proc/sys/kernel/random/uuid)
echo
echo " creating xml"
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>" >/tmp/ln/"$pdfname"/notebook.xml
echo "<!-- do not alter this file! -->" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<lecturenotes>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<paperwidth>"$w"</paperwidth>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<paperheight>"$h"</paperheight>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<paperpattern>2</paperpattern>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<paperscale>0.375</paperscale>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<paperfit>2</paperfit>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<paperzoom>1.0</paperzoom>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<papercolor>16777215</papercolor>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<patterncolor>12632319</patterncolor>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<covercolor>16711709</covercolor>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<coverstyle>0</coverstyle>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<pageinfocus>1</pageinfocus>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<layers>1</layers>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<layerinfocus>1</layerinfocus>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<textlayer>1</textlayer>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<textlayersettings>0</textlayersettings>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<uuid>"$UUID"</uuid>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "<creationdate>1392218352160</creationdate>" >>/tmp/ln/"$pdfname"/notebook.xml
echo "</lecturenotes>" >>/tmp/ln/"$pdfname"/notebook.xml
echo " done"
}
createxmlf(){
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>" > /tmp/ln/"$zipname"/folder.xml
echo "<!-- do not alter this file! -->" >> /tmp/ln/"$zipname"/folder.xml
echo "<lecturenotes>" >>/tmp/ln/"$zipname"/folder.xml
echo "<covercolor>16711709</covercolor>" >> /tmp/ln/"$zipname"/folder.xml
echo "<isopen>1</isopen>" >> /tmp/ln/"$zipname"/folder.xml
echo "<coverstyle>0</coverstyle>" >> /tmp/ln/"$zipname"/folder.xml
echo "<creationdate>1392218352160</creationdate>" >> /tmp/ln/"$zipname"/folder.xml
echo "</lecturenotes>" >> /tmp/ln/"$zipname"/folder.xml
}
createzip(){
echo
echo " creating zip"
pushd /tmp/ln >> /dev/null
zip -rmq "$opath""$zipname" "$zipname"
popd >> /dev/null
echo " done"
}
cleanup(){
echo
echo " cleanup"
rm -R /tmp/ln
echo " done"
}
# -------- end subfunctions ------------
# -------- set parameter --------------
while getopts "htr:d:p:" opt; do
case $opt in
h) phelp;;
t) text=true;;
r)
resw=$(echo $OPTARG | cut -f1 -d "x")
resh=$(echo $OPTARG | cut -f2 -d "x")
;;
d) dpi=$OPTARG;;
p)
opath=$(echo "$OPTARG" | tr -s "/")
if [ ! -d "$OPTARG" ]; then
mkdir "$opath"
fi
;;
\?) phelp;;
esac
done
shift $((OPTIND-1))
# ------ edn set parameter ----------------------
# -------- main ------------------------
if [ -d "/tmp/ln" ]; then
rm -Rf /tmp/ln/*
else
mkdir /tmp/ln
fi
if [ -d "$@" ]; then # if folder
zipname=$(basename "$@")
folder=$zipname
mkdir /tmp/ln/"$zipname"
IFS=$'\n'
for i in $(ls -1 "$@/"*.pdf)
do
lnconvert $i
done
createxmlf
else # if one pdf
folder=""
zipname=${*%%.*}
lnconvert $@
fi
createzip
cleanup
Es wird nicht überprüft ob die Parameter korrekt sind. Man kann z.B. Seiten in Auflösung von 10000x1000px erstellen. Da bitte aufpassen.
Würde mich über Feedback freuen.