Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 22

Thema: Wieso möchte pdftoppm nicht im Script arbeiten?

  1. #1
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574

    Wieso möchte pdftoppm nicht im Script arbeiten?

    Hallo zusammen

    Ich habe viele PDF-Dateien. Einige davon sollen als Bilder konvertiert werden.
    Das funktioniert auch wunderbar mit dem Tool pdftoppm.
    Nur leider nicht im Script. Es sei denn am Script ist etwas falsch.

    Zunächst habe ich für die vielen PDF Dateien einen extra Ordner erstellt und versuchsweise nur 5 der PDF Dateien, welche als Bilder generiert werden sollen, hierher kopiert.
    Jetzt soll das erstellte Script diesen Ordner abarbeiten. Nur will pdftoppm nicht mitspielen.

    Das Script:
    Code:
    #!/bin/sh
    pdffile=`ls | grep .pdf`
    
    for filename in $pdffile
        do 
        name=` basename -s .pdf $pdffile `
        echo $name\;
        pdftoppm -jpeg $name.pdf Bilder/$name.jpg
    done
    exit
    Das Script ist im eigenen bin-Ordner ausfühbar gemacht als pdftojpg.

    Als Antwort nach dem Start des Scripts erfolgt:
    Code:
    pdftoppm version 0.79.0 
    Copyright 2005-2019 The Poppler Developers - http://poppler.freedesktop.org 
    Copyright 1996-2011 Glyph & Cog, LLC 
    Usage: pdftoppm [options] [PDF-file [PPM-file-prefix]] 
      -f <int>                 : first page to print 
      -l <int>                 : last page to print 
      -o                       : print only odd pages 
      -e                       : print only even pages 
      -singlefile              : write only the first page and do not add digits 
      -r <fp>                  : resolution, in DPI (default is 150) 
      -rx <fp>                 : X resolution, in DPI (default is 150) 
      -ry <fp>                 : Y resolution, in DPI (default is 150) 
      -scale-to <int>          : scales each page to fit within scale-to*scale-to pixel box 
      -scale-to-x <int>        : scales each page horizontally to fit in scale-to-x pixels 
      -scale-to-y <int>        : scales each page vertically to fit in scale-to-y pixels 
      -x <int>                 : x-coordinate of the crop area top left corner 
      -y <int>                 : y-coordinate of the crop area top left corner 
      -W <int>                 : width of crop area in pixels (default is 0) 
      -H <int>                 : height of crop area in pixels (default is 0) 
      -sz <int>                : size of crop square in pixels (sets W and H) 
      -cropbox                 : use the crop box rather than media box 
      -mono                    : generate a monochrome PBM file 
      -gray                    : generate a grayscale PGM file 
      -sep <string>            : single character separator between name and page number, default -  
      -forcenum                : force page number even if there is only one page  
      -png                     : generate a PNG file 
      -jpeg                    : generate a JPEG file 
      -jpegopt <string>        : jpeg options, with format <opt1>=<val1>[,<optN>=<valN>]* 
      -tiff                    : generate a TIFF file 
      -tiffcompression <string>: set TIFF compression: none, packbits, jpeg, lzw, deflate 
      -freetype <string>       : enable FreeType font rasterizer: yes, no 
      -thinlinemode <string>   : set thin line mode: none, solid, shape. Default: none 
      -aa <string>             : enable font anti-aliasing: yes, no 
      -aaVector <string>       : enable vector anti-aliasing: yes, no 
      -opw <string>            : owner password (for encrypted files) 
      -upw <string>            : user password (for encrypted files) 
      -q                       : don't print any messages or errors 
      -v                       : print copyright and version info 
      -h                       : print usage information 
      -help                    : print usage information 
      --help                   : print usage information 
      -?                       : print usage information

    Ohne dem pdftoppm-Befehl werden die 5 PDF Dateien durch den eingefügten echo-Befehl ohne Endung richtig anzeigt.
    Mit dem pdftoppm-Befehl wird 5 mal die Helpanzeige des Befehls ausgegeben.

    Was läuft hier falsch? Wo liegt mein Denkfehler?

    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  2. #2
    Registrierter Benutzer Avatar von drcux
    Registriert seit
    Oct 2003
    Beiträge
    6.979
    Üblicher Fehler: Leerzeichen/Sonderzeichen im Dateinamen?

  3. #3
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574
    Moin drcux
    Eigentlich nicht, denn es macht im händischen befehlen:{code]pdftoppm -jpeg 1.pdf Bilder/1[/code]
    (gleiche Handhabung in der Shell, scriptlos)
    keine Probleme ob im Dateinamen irgendwo ein Leerzeichen steckt.
    Sonderzeichern gibt es keine.

    Der Fehler liegt entweder irgendwo an einer anderen Stelle oder man kann pdftoppm nicht im Script verwenden.
    Fragt sich nur warum.
    Geändert von exponator (31.05.22 um 18:07 Uhr) Grund: edit
    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  4. #4
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574
    Nachtrag:
    Die Idee mit den Sonderzeichen vermutete ich zunächst auch. Aber selbst nach dem Umbenennen der Versuchsdateien in 1.pdf, 2.pdf,3.pdf usw. brachte das gleiche Problem.

    Demnach hakt es an anderer Stelle.
    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  5. #5
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574
    Mittlerweile habe ich das Script etwas umgestellt, um als Ergebnis nicht 5 mal die Helpseite zu haben.
    Code:
    #!/bin/bash
    pdffile=`ls | grep .pdf`
    for filename in $pdffile;
        do 
        pdftoppm -jpeg "$pdffile" Bilder/"$pdffile"
    done
    Das Ergibnis:
    Code:
    pdf2jpg2 
    I/O Error: Couldn't open file '1.pdf<0a>2.pdf<0a>3.pdf<0a>4.pdf<0a>5.pdf': No such file or directory. 
    I/O Error: Couldn't open file '1.pdf<0a>2.pdf<0a>3.pdf<0a>4.pdf<0a>5.pdf': No such file or directory. 
    I/O Error: Couldn't open file '1.pdf<0a>2.pdf<0a>3.pdf<0a>4.pdf<0a>5.pdf': No such file or directory. 
    I/O Error: Couldn't open file '1.pdf<0a>2.pdf<0a>3.pdf<0a>4.pdf<0a>5.pdf': No such file or directory. 
    I/O Error: Couldn't open file '1.pdf<0a>2.pdf<0a>3.pdf<0a>4.pdf<0a>5.pdf': No such file or directory.


    Wo liegt mein Denkfehler. Das Script soll ja eine nach der anderen Datei abarbeiten. Egal wie die Datei heitßt.
    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  6. #6
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.688
    Nimm mal $filename statt $pdffile in der Schleife
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  7. #7
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574
    Moin nopes, mein Gutester
    Die Idee klingt gut;
    habe sie gleich umgesetzt;
    mit dem folgenden Ergebnis:
    Datei 1.pdf wird eingelesen (hat 3 Seiten); im Ordner Bilder werden die Dateien -1.jpg, -2.jpg und -3.jpg erzeugt
    Die Dateien sollten jedoch (wenn schon mit Minuszeichen behaftet) 1-1.jpg, 1-2.jpg und 3-1.jpg lauten.
    Aber...
    Es funktioniert schon mal teilweise. Und das OHNE Fehlermeldungen.
    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  8. #8
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574
    Als Beispiel, wie es sein sollte:
    Datei 1.pdf hat 3 Seiten; ergibt 1-(1 bis 3).jpg (3 Bilder)
    Datei 2.pdf hat 8 Seiten; ergibt 2-(1 bis 8).jpg (8 Bilder)
    Datei 3.pdf hat 5 Seiten; ergibt 3-(1 bis 5).jpg (5 Bilder)
    usw.

    Das Script soll sich jede Datei einzeln vornehmen und aus den jeweiligen PDF Dateien Bilder erzeugen.
    Ich bekomme es einfach nicht hin.
    Irgendwo liegt ein Denkfehler bei mir.
    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  9. #9
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574
    Schade, dass sich hierzu niemand mehr meldet.
    Ihr habt sicher alle Hände voll zu tun. Das verstehe ich gut.
    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  10. #10
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.688
    Ich tippe auf Quoting (pdftoppm -jpeg "$pdffile" Bilder/"$pdffile") - https://www.gnu.org/software/bash/ma...e/Quoting.html
    Escaping könnte auch ein Thema sein (echo $name\;) - https://www.gnu.org/software/bash/ma...Character.html
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  11. #11
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    21.918
    Zitat Zitat von exponator Beitrag anzeigen
    Schade, dass sich hierzu niemand mehr meldet.
    Ihr habt sicher alle Hände voll zu tun. Das verstehe ich gut.
    es würde helfen, wenn Du immer den aktuellen Stand des Scriptes posten würdest.
    Ich bin root - ich darf das.

  12. #12
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574
    Zitat Zitat von nopes Beitrag anzeigen
    Ich tippe auf Quoting (pdftoppm -jpeg "$pdffile" Bilder/"$pdffile") - https://www.gnu.org/software/bash/ma...e/Quoting.html
    Escaping könnte auch ein Thema sein (echo $name\;) - https://www.gnu.org/software/bash/ma...Character.html
    Leider nein. Habe ich bereits versucht.
    Zitat Zitat von marce Beitrag anzeigen
    es würde helfen, wenn Du immer den aktuellen Stand des Scriptes posten würdest.
    Gute Idee. Werde ich beherzigen.

    Dieses ist mein bislang letzer Schritt:
    Code:
    #!/bin/bash
    
    pdffile=`ls | grep .pdf`
    
    
    name=` basename -s .pdf $pdffile `
    
    
    for filename in $pdffile;
        do 
        echo $name\ \
    #    pdftoppm -jpeg $filename Bilder/$filename
    done
    
    
    exit
    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  13. #13
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.688
    Denke mal das ist eher in die Richtung die brauchst
    Code:
    #!/bin/bash
    pdffiles=`ls | grep .pdf`
    for pdffile in $pdffiles;
        do 
        name=$(basename -s .pdf $pdffile)
        echo "${pdffile} vs ${name}"
    done
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  14. #14
    Registrierter Benutzer
    Registriert seit
    Mar 2003
    Ort
    Niedersachsen
    Beiträge
    574
    Danke nopes
    Vielen, vielen Dank.
    Das funktioniert.
    Nur, wo bitte lag mein Denkfehler?
    Magst Du mich bitte dahingehend aufklären?
    Was hab ich falsch gemacht?
    Wieso hat das bei mir nicht funktioniert?

    Jetzt muss ich es nur noch hinbekommen, dass es auch mit PDF Dateien funktioniert in denen Leerzeichen enthalten sind.
    Geändert von exponator (02.06.22 um 15:47 Uhr) Grund: Letzten Satz hinzugefügt
    thanks, exponator
    • Laptop 1: openSuSE Leap 15.3 - KDE 5 Plasma
    • Laptop 2: openSUSE Leap 15.3 - KDE 5 Plasma

  15. #15
    Registrierter Benutzer Avatar von drcux
    Registriert seit
    Oct 2003
    Beiträge
    6.979
    Zitat Zitat von exponator Beitrag anzeigen
    Jetzt muss ich es nur noch hinbekommen, dass es auch mit PDF Dateien funktioniert in denen Leerzeichen enthalten sind.
    Einfach nur richtig Quoten, wie bereits erwähnt.

    Dies funktioniert bei mir auch ohne "basename":

    Code:
    #!/bin/bash
    
    pdffiles='*.pdf'
    
    for filename in $pdffiles;
        do
        pdftoppm -jpeg "$filename" "Bilder/$filename"
        done
    
    exit

Ähnliche Themen

  1. Script in Schleife arbeiten lassen
    Von lechef im Forum Linux Allgemein
    Antworten: 5
    Letzter Beitrag: 03.03.10, 18:10
  2. Möchte .sh script per http starten
    Von michikkk im Forum Linux als Server
    Antworten: 11
    Letzter Beitrag: 16.08.07, 17:44
  3. Möchte kleines Script schreiben da Inet Probs :/
    Von skelle im Forum System installieren und konfigurieren
    Antworten: 5
    Letzter Beitrag: 28.10.05, 15:03
  4. Möchte ein script schreiben und brauche Hilfe dabei
    Von MrMackey im Forum Linux Allgemein
    Antworten: 6
    Letzter Beitrag: 03.01.05, 11:59
  5. Wieso funktioniert dieses Script nicht???
    Von SCH4K4L im Forum Linux Allgemein
    Antworten: 10
    Letzter Beitrag: 05.10.03, 21:38

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •