Dia O Inkscape Como Editor De Plantillas?


Objetivo: Dia O Inkscape Como Editor De Plantillas?
Hola debido a otro hilo que se discutía el temam se me ocurro hacer un experimento para sopesar el uso de dia o inkscape como editor de plantillas.
Dentro del método plantilla-xml > PDF
Como saben Dia trabaja con archivos dia que es xml, y puede exportar .svg (que tambien es xml) y usa inkscape.

Con dia
Partiendo de un archivo .dia de 22 KiB para obtener un .pdf se hace en un solo paso mediante CLI
y el pdf obtenido es de 31 KiB
dia seeds.dia -e seeds.pdf


Con inkscape usando convert
Partiendo de un archivo .svg de 4.5 KiB para obtener un .pdf se hace en dos pasos mediante CLI
y el pdf obtenido es de 330,1 KiB (el png es de 258,8 KiB)
inkscape seeds.svg --export-png=seeds.png
convert seeds.png seeds-convert.pdf


Con inkscape sin usar otras herramientas
Partiendo de un archivo .svg de 4.5 KiB para obtener un .pdf se hace en un solo paso mediante CLI
y el pdf obtenido es de 24 KiB
inkscape seeds.svg --export-pdf=seeds.pdf


Luego como conclusion se obtiene que los archivos pdf generados con dia y con Inkscape directamente son casi iguales en tamaño, siendo Inkscape el que logra el pdf de menos "peso".

La opción que usa convert no la recomiendo ya que se obtienen archivos del orden de 10 veces mas tamaño innecesariamente.
Creo que el problema radica en que convert es un programa de pixeles y dia e Inkscape son programas vectoriales

Saludos.

Perfil MP  
Objetivo: Re: Dia O Inkscape Como Editor De Plantillas?
Tincho:
Citar:
--export-pdf

+1

Citar:
Creo que el problema radica en que convert es un programa de pixeles y dia e Inkscape son programas vectoriales

Si, seguro que es eso.

Objetivo: Re: Dia O Inkscape Como Editor De Plantillas?
Otra ventaja que tiene el .svg que genera inkscape con respecto al .dia es que en el .svg el texto tiene un "id", un identificador.
Esto, si bien parece un dato sin importancia permitiría la edition del .svg con gb.xml y la ventaja que supone es que el documento se puede editar tantas veces se desee.
Para ponerlo mas claro, con el método plantilla > edición > guardado de archivo modificado, una vez que el archivo era modificado ya no se podía volver a modificar, había que generarlo desde cero.
La otra ventaja es que se podrían importar datos desde el .svg hacia nuestro programa/BBDD
Al ser el elemento TAG un valor constante al que se asocia texto tipografías colores etc. seria posible cambiar no solo el texto sino también el color, negrita, cursiva, subrayado etc.

Saludos.

Perfil MP  
Objetivo: Re: Dia O Inkscape Como Editor De Plantillas?
He creado esta pequeña función que edita los .svg pero con el método del TAG no del texto.


Public Function EditXml(strPath As String) As Integer ''Edicion de un archivo xml.
Dim document As New XmlDocument
Dim element As New XmlElement
Dim node As XmlNode
Dim strSave As String
Dim int As Integer
Dim str As String
Dim stx As New String[]

strSave = File.Dir(strPath) &/ File.BaseName(strPath) & "-prod." & File.Ext(strPath)
document.Open(strPath)

For Each element In document.GetElementsByTagName("text", gb.IgnoreCase)
For Each node In element.Attributes
Select node.Name
Case "id"
'If node.Value = "dvariety"
element.Value = "variedad"
For Each node In element.Attributes
Select node.Name
Case "style"
stx = Split(node.Value, ";")
For int = 0 To stx.max
Select Split(stx[int], ":")[0]
Case "fill"
stx[int] = "fill:#FF0000"
End Select
Next
node.Value = stx.Join(";")
End Select
Next
'Endif
End Select
Next
Next
document.Save(strSave)
Return 1
End


Saludos.

Perfil MP  
Objetivo: Re: Dia O Inkscape Como Editor De Plantillas?
tincho escribió: [Ver mensaje]
He creado esta pequeña función que edita los .svg pero con el método del TAG no del texto.


Public Function EditXml(strPath As String) As Integer ''Edicion de un archivo xml.
Dim document As New XmlDocument
Dim element As New XmlElement
Dim node As XmlNode
Dim strSave As String
Dim int As Integer
Dim str As String
Dim stx As New String[]

strSave = File.Dir(strPath) &/ File.BaseName(strPath) & "-prod." & File.Ext(strPath)
document.Open(strPath)

For Each element In document.GetElementsByTagName("text", gb.IgnoreCase)
For Each node In element.Attributes
Select node.Name
Case "id"
'If node.Value = "dvariety"
element.Value = "variedad"
For Each node In element.Attributes
Select node.Name
Case "style"
stx = Split(node.Value, ";")
For int = 0 To stx.max
Select Split(stx[int], ":")[0]
Case "fill"
stx[int] = "fill:#FF0000"
End Select
Next
node.Value = stx.Join(";")
End Select
Next
'Endif
End Select
Next
Next
document.Save(strSave)
Return 1
End


Saludos.


Tremendo lo que has montado, super útil, yo me guie con tu ejemplo si no recuerdo mal para montar mi programa con DIa, y efectivamente una de las diferencias a priori es que a la hora de maquetar DIA el texto es el que tienes que buscar y recorrer, por contra Inkscape tiene un identificador no visible que según para que casos (tipografías pequeñas o maquetación muy limitada) va genial porque no el contenido que puede ser un solo carácter a nivel visual.

Saludos.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.2386s (PHP: -46% SQL: 146%)
Consultas SQL: 45 - Debug off - GZIP Activado