如何使用Reportlab在PDF中插入背景图像(有点像水印)?

时间:2018-12-23 09:19:29

标签: python pdf pdf-generation reportlab

我是刚开始使用Reportlab和python的人。我正在尝试创建一个PDF文档,单击该文件即可下载(它必须是动态的)。 PDF有表格,我需要PDF内容的半透明背景。我无法弄清楚该怎么做。以下是我用于生成PDF的一些相关代码:

def download_FA_PR(请求):

response = HttpResponse(content_type='hello(c)/pdf')
response['Content-Disposition'] = 'application; filename="myfile.pdf"'
buffer = BytesIO()
doc = SimpleDocTemplate(
    buffer,
    rightMargin=500,
    leftMargin=500,
    topMargin=125,
    bottomMargin=10,
    pagesize=A4)
styles = getSampleStyleSheet()
elements = []
elements.append(Paragraph("STUDENT'S SCHOLASTIC REPORT", styles['Title']))
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/media/Reports/school_logo.png"
logo = Image(BASE_DIR, width=2 * inch, height=2 * inch)
logo.drawHeight = 0.55 * inch * logo.drawHeight / logo.drawWidth
logo.drawWidth = 0.45 * inch

首先,我添加了doc模板并定义了图像规范 接下来,我有了我定义的PDF的内容(大部分是表格)。(在此发布了一些代码,不是必需的)

tmain = Table(datamain, colWidths=None, rowHeights=None, spaceAfter=3)

(在省略的代码中也定义了数据主体)

tmain.setStyle(TableStyle([
                            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
                            # ('VALIGN', (2,0), (2, 0), 'BOTTOM'),

                            ('VALIGN', (2,2), (2, 2), 'TOP'),
                            ('LINEABOVE',(0,3), (3,3),1, colors.black),
                            ('LINEBELOW',(0,3), (3,3),1, colors.black),
                                # ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                            ('SPAN', (1,0),(1,1)),
                            ('SPAN', (1,0),(1,2)),

                           ]))


elements.append(tmain)

doc.build(elements)
pdf = buffer.getvalue()
buffer.close()
response.write(pdf)

return response

编辑:问题已与placing image over a PDF合并。我面临着不同的事情。 placing image over a PDF的答案描述了将PDF与水印合并以获取所需的文档。但是,我希望创建一个带有水印的动态生成的PDF,并将生成的PDF下载到我的本地系统上(它实际上是在单击按钮时下载学生的学校报告,因此我不能每次单击都进行合并)。

0 个答案:

没有答案