python - tutorial - reportlab text to pdf
Python-Reportlabs: ¿guardar 2 gráficos diferentes en 2 páginas diferentes? (1)
Haz un lienzo y renderiza tus dibujos en él:
from reportlab.pdfgen import canvas
from reportlab.graphics import renderPDF
c = canvas.Canvas(''hi.pdf'')
# your drawing
# drawing = Drawing(400, 200)
x, y = 0, 0 # coordinates (from left bottom)
renderPDF.draw(drawing, c, x, y, showBoundary=False)
c.showPage() # to end a page and start a new one
# extra pages content
c.save() # to save :D the whole document
Espero eso ayude :)
Tengo el siguiente código donde estoy dibujando un gráfico de barras verticales y un gráfico de líneas también dentro de un PDF.
¿Cómo guardo estos 2 gráficos en 2 páginas diferentes del PDF? Vi que se puede hacer usando -
c = canvas.Canvas("hello.pdf")
hello(c)
c.showPage()
c.save()
Pero, en lugar de usar Canvas, estoy usando el objeto Drawing en el que el método showPage()
no existe.
¿Cómo guardo los 2 gráficos en 2 páginas diferentes del PDF? A la derecha, el segundo gráfico (gráfico de líneas) se solapa con el primer gráfico (gráfico de barras verticales), lo que obstaculiza el gráfico de barras.
Aquí está mi código.
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart
drawing = Drawing(400, 200)
data = [
(13, 5, 20, 22, 37, 45, 19, 4),
(14, 6, 21, 23, 38, 46, 20, 5)
]
bc = VerticalBarChart()
bc.x = 50
bc.y = 50
bc.height = 125
bc.width = 300
bc.data = data
#bc.strokeColor = colors.black
bc.valueAxis.valueMin = 0
bc.valueAxis.valueMax = 50
bc.valueAxis.valueStep = 10
bc.categoryAxis.labels.boxAnchor = ''ne''
bc.categoryAxis.labels.dx = 8
bc.categoryAxis.labels.dy = -2
bc.categoryAxis.labels.angle = 30
bc.categoryAxis.categoryNames = [''Jan-99'',''Feb-99'',''Mar-99'',
''Apr-99'',''May-99'',''Jun-99'',''Jul-99'',''Aug-99'']
drawing.add(bc)
drawing.save()
from reportlab.graphics.charts.lineplots import LinePlot
from reportlab.graphics.widgets.markers import makeMarker
drawing = Drawing(400, 200)
data = [
((1,1), (2,2), (2.5,1), (3,3), (4,5)),
((1,2), (2,3), (2.5,2), (3.5,5), (4,6))
]
lp = LinePlot()
lp.x = 50
lp.y = 50
lp.height = 125
lp.width = 300
lp.data = data
lp.joinedLines = 1
lp.lines[0].symbol = makeMarker(''FilledCircle'')
lp.lines[1].symbol = makeMarker(''Circle'')
lp.lineLabelFormat = ''%2.0f''
#lp.strokeColor = colors.black
lp.xValueAxis.valueMin = 0
lp.xValueAxis.valueMax = 5
lp.xValueAxis.valueSteps = [1, 2, 2.5, 3, 4, 5]
lp.xValueAxis.labelTextFormat = ''%2.1f''
lp.yValueAxis.valueMin = 0
lp.yValueAxis.valueMax = 7
lp.yValueAxis.valueSteps = [1, 2, 3, 5, 6]
drawing.add(lp)
drawing.save()
drawing.save(formats=[''pdf''],outDir=''.'',fnRoot=None)