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.