gpt4 book ai didi

python - 印地语字体在使用 python reportlab pdf 库创建的 pdf 中不显示正确的印地语单词

转载 作者:行者123 更新时间:2023-12-05 08:08:40 26 4
gpt4 key购买 nike

我在 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 文件中,如下所示。

enter image description here

如您所见,stationnamedistname 列的印地语单词显示不正确,如上面的数据库表所述。例如,हरिद्वार 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com