【发布时间】:2017-05-13 09:43:05
【问题描述】:
在使用 Python 中的 ReportLab 生成 PDF 时,我快速浏览了网络,但无法找到一种方法来设置 PDF 的背景颜色。如何设置背景颜色?
【问题讨论】:
在使用 Python 中的 ReportLab 生成 PDF 时,我快速浏览了网络,但无法找到一种方法来设置 PDF 的背景颜色。如何设置背景颜色?
【问题讨论】:
我想出了一个临时的方法。假设您有一个 A4 大小的页面(这是默认的),您可以简单地指定自己的形状,如下所示:
from reportlab.lib.colors import HexColor
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.units import cm
pdf = Canvas("bgColour.pdf")
pdf.setFillColor(HexColor("#99b0e7"))
path = pdf.beginPath()
path.moveTo(0*cm,0*cm)
path.lineTo(0*cm,30*cm)
path.lineTo(25*cm,30*cm)
path.lineTo(25*cm,0*cm)
#this creates a rectangle the size of the sheet
pdf.drawPath(path,True,True)
pdf.showPage()
pdf.save()
当然,如果您想要一种更稳健的方法,您可以将我指定的精确测量值替换为您可以动态更改的变量,例如:
x = 25
y = 30
path.moveTo(0*cm,0*cm)
path.lineTo(0*cm,y*cm)
path.lineTo(x*cm,y*cm)
path.lineTo(x*cm,0*cm)
希望这可以帮助那些发现自己处于与我类似情况的人!
【讨论】:
不要使用复杂的方法,而是使用这个简单的技巧:
import reportlab
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
from reportlab.lib.pagesizes import letter
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import inch
from reportlab.lib.units import cm
def background(c):
c.setFillColorRGB(1,0,0)
c.rect(5,5,652,792,fill=1)
c=canvas.Canvas("Background",pagesize=letter)
c.setTitle("Background")
background(c)
c.showPage()
c.save()
只需绘制一个与pdf页面坐标相同的矩形,并用选择的颜色填充。
【讨论】: