【问题标题】:Python ReportLab set background colourPython ReportLab 设置背景颜色
【发布时间】:2017-05-13 09:43:05
【问题描述】:

在使用 Python 中的 ReportLab 生成 PDF 时,我快速浏览了网络,但无法找到一种方法来设置 PDF 的背景颜色。如何设置背景颜色?

【问题讨论】:

    标签: python reportlab


    【解决方案1】:

    我想出了一个临时的方法。假设您有一个 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)
    

    希望这可以帮助那些发现自己处于与我类似情况的人!

    【讨论】:

      【解决方案2】:

      不要使用复杂的方法,而是使用这个简单的技巧:

       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页面坐标相同的矩形,并用选择的颜色填充。

      【讨论】:

      • 神奇的数字 5,5,652,792 从何而来?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 2023-03-25
      • 2010-09-17
      • 2018-07-15
      • 2014-09-04
      • 2010-11-10
      相关资源
      最近更新 更多