[pyar] imprimir desde un svg

Leandro Martin Balado Vidal lm.baladovidal en gmail.com
Vie Mar 2 14:48:27 ART 2012


Bueno gente, estoy haciendo un programa pequeño... y una exigencia era que
imprima. en el chat de irc me dieron una mano gigante y despues de una
mañana entera salio esto:

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

import time   #este es para la hora
import random #este es para los random
import os     #este es para la funcion que escribe en la terminal los
comandos (os.system(string))

def fecha():#esta funcion es para acomodar el formato yakie... no me gusta
como muestra la hora :P
    fecha = time.ctime()
    espacios = fecha.count(" ")
    lista = []
    palabra = ""
    for x in range(len(fecha)):
        if fecha[x] != " ":
            palabra +=fecha[x]
        else:
            lista.append(palabra)
            palabra = ""
    lista.append(palabra)

    fech = lista[0]+'_'+lista[3]+'_'+lista[1]+'_'+lista[5]+'_'+lista[4]
    return fech

nombre_svg2 = 'factura_'+fecha()+'.svg'#este es para que cada svg tenga un
nombre distinto
svg =  open('dibujo.svg', 'r+')#abre los arhivos
svg2 = open(nombre_svg2,'w')   #--^
nombre_ps = nombre_svg2[0:-4]+'.ps'

lineas = svg.readlines()#esto vean el manejo de archivos para entender mas
o menos que hace.
lista =['         id="tspan2818">Factura</tspan></text>\n']#esto es el
campo que edito en el svg // tienes espacios a principio
                                                           #por el arhivo
svg esta indentado, tonces si no los pongo nunca va a encontrar una linea
igual.
variable = str(random.randint(1, 9999)) #un random que cambie el campo para
saber si cambia el campo

for datos in lineas:          #esto puede ser una crotada, no me
crucifiquen, pero es una forma que calculo
    if datos not in lista:#es buena para crear un arhivo svg nuevo, y
cuando llega a la linea que me interesa, la cambia
        svg2.write(datos)
    else:
        svg2.write('
id="tspan2818">'+variable+'</tspan></text>\n')#esta es la linea por la que
remplaza la original

svg.close()
svg2.close()
os.system('inkscape '+nombre_svg2+' --export-ps='+nombre_ps)#este comando
crea el .ps a partir del svg
os.system('lp '+nombre_ps)#y este lo imprime.. y esa es toda la magia. XD

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

espero que les sirva =)

Gracias facundobatista, StyXman y Chelin XD
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120302/2904b13b/attachment.html>


More information about the pyar mailing list