Πως φτιάχνω ένα PDF από μια σειρά εικόνων png/jpg στη γραμμή εντολών

dimitris | Δευ, 11/18/2013 - 18:42 | 4' | 1

Εχετε μια σειρά από εικόνες JPEG ή PNG (ή tiff ή ότι άλλο θέλετε) και θέλετε να δημιουργήσετε ένα PDF όπου κάθε σελίδα θα έχει τις εικόνες με την ίδια σειρά. Στη γραμμή εντολών του Linux αυτό γίνεται εύκολα με τη χρήση του εργαλείου convert (χρειάζεστε το πακέτο Imagemagick).

Η εντολή που χρειάζεστε έχει τη μορφή:

convert image1.png image2.png ... imageX.png output.pdf

Δηλαδή, πρώτα γράφετε τα ονόματα των εικόνων και στο τελευταίο όρισμα ορίζετε το όνομα του αρχείου PDF που θέλετε να δημιουργηθεί. Προφανώς, με τον ίδιο τρόπο μπορείτε απλά να μετατρέψετε μια και μόνο εικόνα (JPG, PNG, κλπ) σε PDF.

Για παράδειγμα, εγώ είχα 18 εικόνες (td2159.jpg έως td2176.jpg) τις οποίες ανά δύο έπρεπε να τις βάλω σε ένα δισέλιδο PDF.  Οι εντολές που έδωσα ήταν:

 convert td2159.jpg td2160.jpg 1.pdf
 convert td2161.jpg td2162.jpg 2.pdf
 convert td2163.jpg td2164.jpg 3.pdf
 convert td2165.jpg td2166.jpg 4.pdf
 convert td2167.jpg td2168.jpg 5.pdf
 convert td2169.jpg td2170.jpg 6.pdf
 convert td2171.jpg td2172.jpg 7.pdf
 convert td2173.jpg td2174.jpg 8.pdf
 convert td2175.jpg td2176.jpg 9.pdf

 

Σημαντική Σημείωση:

Επειδή το convert είναι πανίσχυρο εργαλείο, όταν τρέχει σε web server είναι πιθανή αιτία για κενά ασφαλείας. Γι' αυτό το λόγο, πολλές μοντέρνες διανομές  Linux, όπως το Ubuntu, εφαρμόζουν εξορισμού μια ΠΟΛΥ περιοριστική πολιτική για το τι μπορεί και τι δεν μπορεί να κάνει κάποιος με το convert! Αυτή η πολιτική καθορίζεται από ένα policy file, που συνήθως είναι το /etc/ImageMagick-6/policy.xml. Στο Ubuntu 18.04 για παράδειγμα, στο αρχείο αυτό υπάρχει ρύθμιση που απαγορεύει να μετατρέπει ο χρήστης πολλά αρχεία με μιας σε PDF! Μην ρωτάτε γιατί. Για να υπάρχει αυτή η απαγόρευση, κάτι ξέρουν... Ετσι, αν δοκιμάσετε τις παραπάνω εντολές στο Ubuntu θα πάρετε ένα μήνυμα σφάλματος:

$ convert p1.jpg p2.jpg p3.jpg p4.jpg p5.jpg output.pdf
convert-im6.q16: not authorized `output.pdf' @ error/constitute.c/WriteImage/1037.

Επομένως για να λειτουργήσουν λοιπόν οι παραπάνω εντολές του άρθρου, θα πρέπει είτε να μετονομάσετε προσωρινά το παραπάνω αρχείο σε κάτι άλλο

sudo mv /etc/ImageMagick-6/policy.xml /etc/ImageMagick-6/policy.xmlout

ή καλύτερα να κάνετε κάτι λιγότερο δραστικό: να επεξεργαστείτε το αρχείο αυτό και να απενεργοποιήσετε τη συγκεκριμένη ρύθμιση που απαγορεύει την μετατροπή πολλαπλών αρχείων σε PDF. Ανοίξτε το αρχείο με δικαιώματα υπερχρήστη: 

sudo nano /etc/ImageMagick-6/policy.xml

και βρείτε τη γραμμή που περιέχει τη λέξη PDF (συνήθως η γραμμή 76 ή κάντε αναζήτηση):

changing convert policy

Για να απενεργοποιήσετε τη ρύθμιση γράψτε στην αρχή αυτό:  <!-- και στο τέλος της γραμμής αυτό:  --> 

Δηλαδή να γίνει η γραμμή:

  <!--  <policy domain="coder" rights="none" pattern="PDF" /> -->

Μετά αποθηκεύστε το αρχείο, και τώρα οι εντολές θα λειτουργούν μια χαρά!

Φόρουμ
Δώσε αστέρια!

MO: 5 (ψήφοι: 2)

Σχόλια

Πολυ καλο Δημητρη! yes

Επισης, μπορει να γινει και το αντιθετο, δηλαδη να εξαγουμε τις εικονες απο καποιο pdf αρχειο εκτελωντας

convert output.pdf image.png