tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
468
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Hannes_007 Hannes_007 ist offline Grünschnabel
    Registriert seit
    Jun 2010
    Beiträge
    3
    Hallo,

    unter Suse Linux 11.2 / Kubuntu 10.04 habe ich mir ein Service-Menü angelegt.
    Bis auf das Nachfolgende funktioniert alles bestens.

    Bisher habe ich auf der Konsole mit dem Programm pdftk Anhänge an ein Pdf-File erzeugt.

    Der Code lautete
    Code :
    1
    
    pdftk beispiel.pdf [COLOR="Red"]attach_files[/COLOR] Anlage1.pdf Anlage2.pdf Anlage3.pdf [COLOR="Red"]output[/COLOR] beispiel_mit_anhang.pdf

    Das ganze habe ich nun in ein script gepackt ( oder zumindest versucht )
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
     
    #!/bin/sh
    # PDF Tool Sammlung zum Einbinden in KDE Service Menüs
     
    RETURN=""
     
    #
    # Prüfen, dass mindestens ein Argument übergeben wurde
    #
    if [ $# -lt 1 ] ; then
      echo "Bitte das Script nicht direkt aufrufen." > /dev/stderr
      exit 1
    fi
     
    #
    # Fallunterscheidungen (anhand des ersten Parameters)
    #
    case "$1" in
        pdftk-attach-files) # Usage: ./pdftk-tools.sh pdftk-attach-files <input.pdf>
            # Prüfe Parameteranzahl
            if [ $# -ne 2 ] ; then exit ; fi
            
            # Hole Benutzereingaben
            INPUT="$2"
            ATTACHMENTS=`kdialog --title "Anhängen auswählen" --multiple --getopenfilename ~/ "*.pdf"`
            if [ $? -ne 0 ] ; then exit ; fi # Abbrechen, falls der Dialog einfach geschlossen wurde (--> kdialog gibt Returncode 1 zurück)
            OUTPUT="$INPUT.attachments.pdf"
            
            # Starte pdftk
            RETURN=`pdftk "$INPUT" attach_files "$ATTACHMENTS" output "$OUTPUT" 2>&1`
        ;;
        
        pdftk-bla)
            # irgendwas anders ...
        ;;
    esac
     
    #
    # Fehlermeldung ausgeben, wenn das letzte ausgeführte Kommando nicht fehlerfrei ausgeführt wurde
    #
    if [ $? -ne 0 ] ; then
        kdialog --title "Fehler" --error "$RETURN"
    fi


    Wenn ich im Konqueror oder im Dolphin eine Pdf-Datei mit der rechten Maustaste markiere und das script starte, öffnet sich ein
    Fenster, indem ich auf der Festplatte die Dateien markieren kann, die ich als Anhang an das Pdf File haben möchte.
    Anschließend wird eine Datei mit dem Namen xxx.attachments.pdf erzeugt. Leider hat diese Datei keine Anhänge. Woran kann das liegen?


    mfg
    Hannes
     

  2. #2
    Avatar von Raubkopierer
    Raubkopierer Raubkopierer ist offline Mitglied Diamant
    Registriert seit
    Feb 2007
    Ort
    Saultitz (Sachsen)
    Beiträge
    1.700
    Blog-Einträge
    7
    Code :
    1
    
            RETURN=`pdftk "$INPUT" attach_files "$ATTACHMENTS" output "$OUTPUT" 2>&1`

    Prinzipiell würde ich den Fehler in dieser Zeile vermuten auch wenn ich das Programm nicht kenne. Durch die doppelten Ausführungszeichen wird die wohl durch Leerzeichen getrennte Liste mit Dateinamen fpr pdftk zu einem einzigen Dateinamen und das ganze schlägt daher fehl.
     
    Albert Einstein sagte einmal:
    Es gibt 2 Dinge die unendlich sind: Das Universum und die Dummheit der Menschen. Beim Ersten bin ich mir allerdings nicht ganz sicher.

    Stoppt die Vorratsdatenspeicherung!

  3. #3
    Hannes_007 Hannes_007 ist offline Grünschnabel
    Registriert seit
    Jun 2010
    Beiträge
    3
    Hallo,

    wie müsste dann die Zeile aussehen
    Habe nicht so viel Ahnung vom programmieren?
    Beim o. Script hatte mein Sohn mitgewirkt.

    mfg
    Hannes
     

  4. #4
    Avatar von Navy
    Navy Navy ist offline Freiwillige Serverwehr
    tutorials.de Administrator
    Registriert seit
    Jul 2003
    Ort
    Montreal (Quebec)
    Beiträge
    1.667
    Die Anführungszeichen sind OK, müssen aber nicht sein… Darüber hinaus sieht das Script gut aus, die Frage ist aber wie sich KDialog verhält und wieso Du einer Variablen ein Execute übergibst. Die Varibale "RETURN" ist unnötig (aber nicht falsch).
     
    Navy

    --
    Echtzeithilfe unter irc.tutorials.de #tutorials.de

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Raubkopierer hat völlig Recht.

    Bei soetwas bietet es sich an Arrays zu benutzen (und die Backticks sollte man besser meiden):
    Code bash:
    1
    2
    3
    
    ATTACHMENTS=( $(kdialog --title "Anhängen auswählen" --multiple --getopenfilename ~/ "*.pdf") )
    ...
    RETURN=$(pdftk "$INPUT" attach_files "${ATTACHMENTS[@]}" output "$OUTPUT" 2>&1)
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Hannes_007 Hannes_007 ist offline Grünschnabel
    Registriert seit
    Jun 2010
    Beiträge
    3
    Hallo,

    danke für die Antworten.
    Habe das SCRIPT zum laufen gebracht.

    Hannes
     

Ähnliche Themen

  1. Probleme mit einem kleinen Script
    Von SantaCruze im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 01.07.07, 02:01
  2. Probleme mit einem Script
    Von SantaCruze im Forum PHP
    Antworten: 8
    Letzter Beitrag: 11.01.07, 17:07
  3. Probleme mit einem alten Script
    Von SantaCruze im Forum PHP
    Antworten: 1
    Letzter Beitrag: 04.01.07, 16:33
  4. Probleme mit einem Script
    Von SantaCruze im Forum PHP
    Antworten: 2
    Letzter Beitrag: 15.09.06, 10:44
  5. Hilfe, Probleme mit einem MySql Script
    Von Morpheusdg im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 27.07.05, 08:10