- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 django 框架中使用 reportlab pdf 库来创建印地语语言的 pdf 报告。我从 PostgreSql 数据库获取数据,格式如下。
waterdate month year rivername stationname distname
2011-06-22 00:00:00 June 2011 नयार मरोरा पौड़ी
2011-06-22 00:00:00 June 2011 गंगा हरिद्वार हरिद्वार
2011-06-22 00:00:00 June 2011 गंगा नरोरा/डी0एस0 बुलन्दशहर
2011-06-22 00:00:00 June 2011 गंगा फतेहगढ़ फर्रूखाबाद
2011-06-22 00:00:00 June 2011 गंगा गुमटिया कन्नौज
我写了下面的代码来将上面的表格显示到 pdf 文件中。
打印.py
from reportlab.lib.pagesizes import letter,A4
from reportlab.platypus import SimpleDocTemplate,Paragraph,Table,TableStyle
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER,TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from .models import Rainfall
pdfmetrics.registerFont(TTFont('Hindi1', 'gargi.ttf'))
class printReport:
def rainfall_report(self):
buffer = self.buffer
doc = SimpleDocTemplate(self.buffer,rightMargin=10,leftMargin=10,topMargin=25,bottomMargin=25,pagesize=self.pagesize)
styles = getSampleStyleSheet()
styles.add(ParagraphStyle(name="TableHeader",alignment=TA_CENTER,))
styles.add(ParagraphStyle(name="ParagraphTitle", fontSize='11',alignment=TA_JUSTIFY,fontName="FreeSansBold"))
styles.add(ParagraphStyle(name="Justify", fontSize='11',alignment=TA_JUSTIFY,fontName="FreeSansBold"))
data = []
data.append(Paragraph( 'Rainfall Data', styles['Title']))
data.append(Spacer(1,12))
table_data =[]
table_data.append([
Paragraph('Date', styles['TableHeader']),
Paragraph('Month', styles['TableHeader']),
Paragraph('Year',styles['TableHeader']),
Paragraph('River Name',styles['TableHeader']),
Paragraph('Station Name',styles['TableHeader']),
Paragraph('District Name',styles['TableHeader'])
])
rainfall_data = Rainfall.objects.all()[:10]
for rainfall in rainfall_data:
table_data.append([
rainfall.waterdate,
rainfall.month,
rainfall.year,
rainfall.rivername,
rainfall.stationname,
rainfall.districtname
])
user_table = Table(table_data,colWidths=[doc.width/7.0]*7)
user_table.hAlign = 'CENTER'
user_table.setStyle(TableStyle(
[ ('INNERGRID', (0,0), (-1,-1), 0.25 , colors.black),
('BOX',(0,0),(-1,-1,),0.5, colors.black ),
('VALIGN',(0,0),(-1,0), 'MIDDLE'),
('BACKGROUND',(0,0),(-1,0), colors.gray ),
('TEXTCOLOR', (0,1), (-1,-1), colors.black),
('VALIGN',(2,1),(-3,-1),'MIDDLE'),
('ALIGN',(0,1),(-1,-1),'CENTRE'),
( 'FONT' , (3,0),(-1,-1) , 'Hindi1') ]))
data.append(user_table)
doc.build(data)
pdf=buffer.getvalue()
buffer.close()
return pdf
上面的代码将数据显示到 pdf 文件中,如下所示。
如您所见,stationname 和 distname 列的印地语单词显示不正确,如上面的数据库表所述。例如,हरिद्वार word 在 pdf 文件中显示不正确。
请帮我解决这个问题。任何帮助将是伟大的应用程序。
最佳答案
你的字体路径是/usr/local/src/test_project/members/templates/members/
你可以这样注册字体:
pdfmetrics.registerFont(TTFont('Hindi1', '/usr/local/src/test_project/members/templates/members/gargi.ttf.ttf'))
关于python - 印地语字体在使用 python reportlab pdf 库创建的 pdf 中不显示正确的印地语单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46925413/
ReportLab 用户指南中说: The colortest.py script in reportlab/demos/colors demonstrates thedifferent ways i
ReportLab 用户指南中说: The colortest.py script in reportlab/demos/colors demonstrates thedifferent ways i
我正在使用 ReportLab VerticalBarChart 生成条形图。我需要其中一个条(每次都是不同的)与其他条的颜色不同,以指定它是“选择”值。 否则,我需要以与其他栏不同的方式标记它。 知
我正在使用 ReportLab 生成 PDF 报告。 我使用了 SimpleDocTemplate 并设置了 pageSize = A5。但是在构建PDF后,当我打开创建的文件时,页面大小为A4。 d
是否可以在段落样式中设置字母/字符间距?我尝试使用spaceShrinkage但这没有任何区别 最佳答案 根据official documentation ,p。 30: The setCharSpa
我的销售订单模板中有以下 rml: [[ repeatIn(o.order_line, 'l') ]] [[ l.name ]] [[
你好, 我正在使用报告实验室生成 pdf。我想绘制一个文本,它是一个 Paragraph,代表一个标题,因此,如果标题比段落的可用长度长,它将在下一行拆分,如果标题太长适合段落的可用宽度和高度,然后调
如何设置表格的左侧位置? response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = '
在报告实验室中 user guide (第 79 页),这是将图像插入表格的方式。 I = Image('../images/replogo.gif') I.drawHeight = 1.25*inc
reportlab文档中有LINEBELOW和LINEABOVE。但我找不到定义右边界或左边界(LINELEFT、LINERIGHT)的方法。 关于如何渲染只有右边框的单元格有什么建议吗? 编辑: 我
有什么方法可以在 reportlab 中获取 Flowable Paragraph 的行数?我有一个很长的字符串,用不同的大小和字体打印。我需要知道要使用 TA_JUSTIFY 对齐打印的整个段落使用
在文档和源代码中,我看到很多对圆角矩形的引用,但是,我似乎无法绘制一个。 我正在绘制一个普通的矩形: canvas.rect(15, 625, 250, 125, fill=0) 我向圆角传递哪些参数
我正在处理发票,我只想在最后一页(也可以是第一页)添加页脚。 由于表的数据是动态的,我无法计算页数。 现在我正在使用 2 个页面模板,第一页(带有 2 个框架和页脚 1)和下一页(带有 1 个框架和页
我知道 LINEABOVE 和 LINEBELOW 样式,我想知道是否有一种方法可以在表格中绘制一条指定宽度的线。 我正在尝试添加一条不“接触”表格边框的线,如果我可以在单元格之间添加一些填充,LIN
我快速浏览了一下网络,但未能找到一种在 Python 中使用 ReportLab 生成 PDF 时设置背景颜色的方法。如何设置背景颜色? 最佳答案 不要使用复杂的方法,而是使用这个简单的技巧: im
我想知道如何将我的脚本保存到桌面。这是我的代码: from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import let
您好,我是报告实验室的新手。我想生成一份包含表格的 pdf 报告。表格中的某些列文本大于列宽,现在我想根据列宽换行文本。 以下是我编写的代码 # Imports from reportlab.pdfg
我正在使用XPreformatted打印一些预格式化的文本,我有一个 换行符的问题。 换行符正确翻译,但另外我得到一个 每行末尾都有“问号”。 这是我的输出: first line? second l
我知道 LINEABOVE 和 LINEBELOW 样式,我想知道是否有一种方法可以在表格中绘制一条指定宽度的线。 我正在尝试添加一条不“接触”表格边框的线,如果我可以在单元格之间添加一些填充,LIN
我快速浏览了一下网络,但未能找到一种在 Python 中使用 ReportLab 生成 PDF 时设置背景颜色的方法。如何设置背景颜色? 最佳答案 不要使用复杂的方法,而是使用这个简单的技巧: im
我是一名优秀的程序员,十分优秀!