martes, 24 de noviembre de 2009

Script para crear documentos.pdf con fotos

Es un script, - creado por  Jjgomera y Guadafan - del foro de Guadalinex -  que puede manejar una selección de fotos y crear un documento .pdf en el que en cada página hay  2 fotos y sus correspondientes líneas para pie de foto, en el que poder poner a mano, una vez imprimido, un comentario de la foto. El documento .pdf se crea con el nombre "album.pdf" en el mismo directorio donde están las fotos que se han seleccionado para crearlo.

Para ejecutarlo hace falta tener instalado los paquetes: python-reportlab, y zenity

Aquí se explica como crear un script. (Este script hay que ponerlo que se inicie con python, en vez de con gnome-terminal ) . Una vez creados los scripts se guardan en la carpeta /home/usuario/.gnome2/nautilus-scripts ,con el nombre de Album_2fotos.py y se tiene acceso a ellos en Nautilus >botón secundario >menú Scripts.

Para usarlo se seleccionan en Nautilus las fotos con las que se quiere crear el documento.pdf y luego >botón secundario >menú Scripts->Album_2foto.py

-------------------------------------------

El texto del script Album_2foto.py es:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys

from reportlab.pdfgen import canvas
from reportlab.platypus import Image
from reportlab.lib.pagesizes import A4
from os import system
from glob import glob
from pyzenity import *

#Si se quiere usar el comando sin argumentos para que trate los archivos que haya a tutiplen

#extensiones=["*.gif", "*.png", "*.jpg"]
#imagenes=[]
#for extension in extensiones:
#    imagenes+=glob(extension)
#imagenes.sort()

#ruta de la imagen, absoluta o relativa si se encuentra en el mismo directorio que el fichero py
#imagenes=["1.jpg",  "2.jpg", "3.jpg", "4.jpg", "5.jpg"]

#imagenes=[sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6], sys.argv[7]]

#total_archivos=(len(sys.argv))

#imagenes=range(len(sys.argv))

#for elemento in range(len(sys.argv)):
#    imagenes[elemento]=sys.argv[elemento]
#primer_elemento=imagenes[0]
#imagenes.remove(primer_elemento)

imagenes=[]

for indice in range(1,len(sys.argv)):
imagenes.append(sys.argv[indice])

print imagenes

#total_archivos=(len(sys.argv))
#n=0
#for elemento in sys.argv:
#      imagenes[n]=(elemento)"
#      n=n+1

#texto del pie de foto
pie_de_foto=""

c = canvas.Canvas("album.pdf", pagesize=A4)
c.setTitle("Album")

update = Progress()

paginas =len(imagenes)/2+len(imagenes)%2

for indice in range(paginas):
#4 líneas para el marco
c.line (50,50,550,50)
c.line (50,50,50,770)
c.line (50,770,550,770)
c.line (550,50,550,770)

#Título
c.line(100,800,500,800)

c.drawString(290,25,"- "+str(indice+1)+" -")
print  "Generando página %i..." % (indice+1)

for img in range(2):
try:
c.drawImage(imagenes[indice*2+img], 125, 530-img*360, width=340, height=230,preserveAspectRatio=True)

#Relleno del pie de foto
c.setFillColorRGB(0.85,0.85,0.85)
c.setStrokeColorRGB(1,1,1)
c.rect(90,420-img*360,420,100, fill=1)
c.setStrokeColorRGB(0.1,0.1,0.1)
c.setFillColorRGB(0, 0, 0)

#Pie de foto
for linea in range(4):
c.line(100,500-img*360-linea*20,500,500-img*360-linea*20)
except:
pass

partes=100/len(imagenes)
update(indice*partes, "Generando página %i..." % (indice+1))

c.showPage()

c.save()

#Si queremos abrirlo con algún visor de pdf
#system("evince album.pdf")

----------------------------------------------

Un ejemplo del album de fotos creado es la siguiente imagen:





--------------------------------------------------------------------------------------------

No hay comentarios:

Publicar un comentario

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.