2013-05-13 5 views
3

Я написал скрипт в python, который создает графики matplotlib и помещает их в отчет в формате pdf с использованием reportlab.Вставить .SVG-файлы в PDF с помощью reportlab

У меня возникли трудности с вложением файлов изображений SVG в файл PDF. У меня не было проблем с использованием изображений PNG, но я хочу использовать SVG-формат, так как это создает изображения лучшего качества в отчете PDF.

Это сообщение об ошибке я получаю:

IOError: cannot identify image file 

Кто-нибудь есть предложения или вам преодолеть эту проблему раньше?

+0

Возможный дубликат [Использование reportlab для buil d PDF с векторными графами, сгенерированными matplotlib] (http://stackoverflow.com/questions/5346869/using-reportlab-to-build-pdf-with-vector-based-graphs-generated-by-matplotlib) – plaes

ответ

1

Вам необходимо убедиться, что вы импортируете PIL (Python Imaging Library) в свой код, чтобы ReportLab мог использовать его для обработки типов изображений, таких как SVG. В противном случае он может поддерживать только несколько базовых форматов изображений.

Это, как я помню, имеет некоторые проблемы, даже при использовании PIL, с векторной графикой. Я не знаю, пытался ли я использовать SVG, но помню, что у меня много проблем с EPS.

4

Вчера мне удалось использовать svglib, чтобы добавить SVG-изображение в качестве отчетной строки Flowable.

поэтому этот рисунок является экземпляром ReportLab рисования, смотрите здесь:

from reportlab.graphics.shapes import Drawing 

ReportLab Drawing наследует текучий:

from reportlab.platypus import Flowable 

Вот минимальный пример, который также показывает, как вы можете масштабировать правильно (вы должны указать только путь и коэффициент):

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 
Смежные вопросы