[pyar] imprimir desde un svg

Juan Carlos Ojeda juancarlospaco en gmail.com
Vie Mar 2 15:51:17 ART 2012


2012/3/2 Leandro Martin Balado Vidal <lm.baladovidal en gmail.com>

> 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
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

Hola...,
podes abrir el SVG con algun motor de renderizado web (i.e. QWebkit,
Chromium, Firefox, etc) en lugar de usar Inkscape,
y al SVG le podes poner codigo JS incrustado,
por lo tanto podes hacer que imprima en 1 click y directamente en la
impresora:

Tu SVG es aprox algo asi:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg>
<svg width="64" height="64" >
...
</svg>

Agregale el JS en un onClick :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg>
<svg width="64" height="64" onClick="alert('El documento sera enviado a la
impresora');window.print();return false;" >
...
</svg>


1 Click en ese SVG y se Imprime solo (en un navegador web)
Pero no funciona en cualquier otro programa, por ejemplo un visor de
imagenes, etc.


Espero se entienda, cualquier cosa avisa...    :)
-- 
.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120302/998bdd0d/attachment.html>


More information about the pyar mailing list