Saltar al contenido

Incruste archivos .SVG en PDF usando reportlab

Este dilema se puede abordar de diferentes formas, por lo tanto te dejamos la respuesta más completa en nuestra opinión.

Solución:

Ayer logré usar svglib para agregar una imagen SVG como un Reportlab Flowable.

entonces este dibujo es una instancia de Reportlab Drawing, mira aquí:

from reportlab.graphics.shapes import Drawing

un dibujo de reportlab hereda Flowable:

from reportlab.platypus import Flowable

Aquí hay un ejemplo mínimo que también muestra cómo puede escalarlo correctamente (solo debe especificar la ruta y el factor):

from svglib.svglib import svg2rlg
drawing = svg2rlg(path)
sx = sy = factor
drawing.width, drawing.height = drawing.minWidth() * sx, drawing.height * sy
drawing.scale(sx, sy)
#if you want to see the box around the image
drawing._showBoundary = True

Como mencionó skidzo, puedes hacer esto totalmente con el svglib paquete, que puede encontrar aquí: https://pypi.python.org/pypi/svglib/

Según el sitio web, Svglib es una biblioteca de Python puro para leer archivos SVG y convertirlos (en un grado razonable) a otros formatos utilizando el kit de herramientas de código abierto ReportLab.

Puedes usar pepita para instalar svglib.

Aquí hay un script de ejemplo completo:

# svg_demo.py

from reportlab.graphics import renderPDF, renderPM
from reportlab.platypus import SimpleDocTemplate
from svglib.svglib import svg2rlg


def svg_demo(image_path, output_path):
    drawing = svg2rlg(image_path)
    renderPDF.drawToFile(drawing, output_path)

if __name__ == '__main__':
    svg_demo('/path/to/image.svg', 'svg_demo.pdf')

valoraciones y comentarios

Eres capaz de añadir valor a nuestro contenido contribuyendo tu veteranía en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *