#1 Le 30/03/2013, à 16: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
Dernière modification par rasnear (Le 30/03/2013, à 19:55)
Hors ligne
#2 Le 30/03/2013, à 18: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.
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne
#3 Le 30/03/2013, à 19: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, à 17: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, à 20:14)
Développeur distribution Hybryde
www.hybryde.org
Hors ligne