Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/03/2013, à 17:35

rasnear

[RESOLU] Script pour decouper pdf puis les renommer

Bonjour à tous,

Je suis à la recherche d'un script capable de:
-découper un fichier pdf d'environ 5 pages en 5 pdf de 1 page( si le fichier d'origine s'appelle bonjour. pdf, il crée bonjour1.pdf bonjour2.pdf,etc)
-convertir ses pdf en .jpg
-rajouter une extension apres le .jpg par exemple .xxx

Toutes ces manipulalions sont possibles à la main mais ce travail est EXTRÊMENET laborieux
donc si vous avez une idée de script qui pourrait faire cela à ma place hje suis preneur. Merci smile

Dernière modification par rasnear (Le 30/03/2013, à 20:55)

Hors ligne

#2 Le 30/03/2013, à 19:41

serged

Re : [RESOLU] Script pour decouper pdf puis les renommer

Avec ImageMagick :

convert toto.pdf toto.jpg

Te créera des toto-x.jpg pour chaque page. Voir :

man convert

Pour les optons de conversion.

Et :

rename 's/\.jpg/\.jpg\.xxx/' *.jpg

Pour le renommage.


Linux-Mint 21 Vanessa (Cinnamon) sur ASUS F2A55/AMD A8-5600K APU et diverses machines en 19.3 ou 20.x

Hors ligne

#3 Le 30/03/2013, à 20:49

rasnear

Re : [RESOLU] Script pour decouper pdf puis les renommer

Merci beaucoup serged pour cette réponse rapide et pertinente!!
En quelqes minuttes j'ai abouti à ceci (si jamais quelqu'un a le même besoin que moi)

convert -page A4 *.pdf mesfichier-%02d.jpg
rename 's/\.jpg/\.jpg\.xxx/' *.jpg

Hors ligne

#4 Le 31/03/2013, à 18:33

Josepe36

Re : [RESOLU] Script pour decouper pdf puis les renommer

Bonjour
Si je peux me permettre :

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Josepe36 30 mars 2013

import os
import sys
import subprocess

user_name = os.getlogin()
home = "/home/"+user_name

try:
    from pyPdf import PdfFileWriter, PdfFileReader
except ImportError:
    print "You need to install python-pypdf."
    sys.exit()

class PdfCutter(object):
    """
    Cut a pdf file given in parameter by its page number
    Transform each page on jpg format
    The pdf and jpg files created are respectively created in
    a directory PDF_CUT/PDF and PDF_CUT/JPG.
    """
    def __init__(self):
        self.file_to_manage = sys.argv[1]
        self.file_name = self.file_to_manage.split('.')[0].split('/')[-1]
        #Control if file exist
        self.file_control()
        self.file_writter = PdfFileWriter()
        self.file_reader = PdfFileReader(file(self.file_to_manage, "rb"))
        #Get page number in file
        self.total_of_pages = self.file_reader.getNumPages()
        #Control if more than one page
        self.page_control()
        #Create output dirs
        self.repertories_to_create = ["PDF_CUT_"+self.file_name,
                                      "PDF_CUT_"+self.file_name+"/PDF",
                                      "PDF_CUT_"+self.file_name+"/JPG",
                                     ]
        #Totalisators
        self.number_pdf_created = 0
        self.number_jpg_created = 0

    def file_control(self):
        '''
        Control if file given on parameter is realy existing
        '''
        if not os.path.isfile(self.file_to_manage):
            print self.file_to_manage," not found."
            sys.exit()

    def dir_control(self):
        '''
        Control if output directories already exist, if not create.
        '''
        for rep in self.repertories_to_create:
            if not os.path.isdir(home+'/'+rep):
                try:
                    os.mkdir(home+'/'+rep)
                    print rep, " created..."
                except:
                    print "ERROR : can't create destination directory "+rep
                    sys.exit()

    def page_control(self):
        '''
        Send message and exit script if just one page found.
        '''
        if self.total_of_pages == 1:
            print "Nothing to do, just 1 page found."
            sys.exit()

    def pdf_cut(self, page):
        '''
        Get the page given by its number and make a pdf file with it.
        '''
        self.file_writter.addPage(self.file_reader.getPage(page))
        self.output_file = file(home+"/PDF_CUT/PDF/"+self.file_name+"_"+str(page)+".pdf", "wb")
        #write page
        self.file_writter.write(self.output_file)
        self.output_file.close()
        self.number_pdf_created = self.number_pdf_created + 1

    def pdf_to_jpg(self, page, extension):
        '''
        Convert the pdf file given by the page number on jpg file.
        '''
        self.pdf_input = home+"/PDF_CUT/PDF/"+self.file_name+"_"+str(page)+".pdf"
        self.jpg_output = home+"/PDF_CUT/JPG/"+self.file_name+"_"+str(page)+".jpg"
        if extension != "":
            self.jpg_output = self.jpg_output + extension      
        params = ['convert', self.pdf_input, self.jpg_output]
        subprocess.check_call(params)
        self.number_jpg_created = self.number_jpg_created + 1

if __name__ == "__main__":

    if len(sys.argv) > 1:
        param = u"%s" % sys.argv[1]
        #If --help is call
        if param == "--help":
            print "This script cut the pdf file given in parameter by its page number."
            print "Transform each page created on a jpg file."
            print "Use :"
            print "with command :     python "+sys.argv[0]+" <path to pdf filename> <extension>"
            print "Extension is for rename jpg file on outpup.
            print "A directory call PDF_CUT will be create in home directory."
            print "Press Ctrl+C to stop the script."
            sys.exit()

    if len(sys.argv) < 2:
        print "Please give a PDF file in parameter."
        sys.exit()
    if len(sys.argv) == 3:
        if type(sys.argv[2]) == str:
            extension = sys.argv[2]
    else:
        extension = ""            

    #instanciate PdfCutter
    cutter= PdfCutter()
    #Control if file exist
    cutter.file_control()
    #if just one page nothing to do
    cutter.page_control()
    #create destination directory
    cutter.dir_control()
    #loop which create each pdf page and jpg file
    for page in range(cutter.total_of_pages):
        try:
            #create pdf file
            cutter.pdf_cut(page)
            #create jpg file
            cutter.pdf_to_jpg(page, extension)
            #print message
            message = str(cutter.pdf_input+
                          " and "+cutter.jpg_output+
                          " successfully created ...")
            print message
            #del writter
            del cutter.file_writter
            cutter.file_writter = PdfFileWriter()
        except:
            raise
            sys.exit()

    #print details at the end of the script
    print "Operation finish."
    print "pdf page created : ", cutter.number_pdf_created, " in ",home+"/PDF_CUT/PDF/"
    print "jpg file created : ", cutter.number_jpg_created, " in ",home+"/PDF_CUT/JPG/"
    sys.exit()

Prend minimum un paramétre, le fichier pdf a traiter, prend en option un nom d'extension pour renommer les jpg crées.
Crée un répertoire de sortie, contenant un repertoire PDF et un repertoire JPG.
La demande était :
- un script
- découper un fichier pdf en plusieurs pdf de 1 page
- rajouter une extension apres le .jpg

Utilisation:

python nom_du_script.py <chemin vers le fichier pdf> <extension>

Dernière modification par Josepe36 (Le 31/03/2013, à 21:14)


Développeur distribution Hybryde
www.hybryde.org

Hors ligne