Hello,
Am trying to generate Arabic reports by web2py and the characters displayed
with wrong encoding.
I tried the following :
1- generate PDF :
def printExam():
reload(sys)
sys.setdefaultencoding('utf-8')
exam_id = request.args[0]
subject = request.args[1]
response.title = T('Test')
# read elements from db
elements = db(db.exam_questions.exam == exam_id ).select()
count = db(db.exam_questions.exam == exam_id ).count()
# define header and footers:
head = THEAD(TR(TH("Header 1", _width="100%"),
_bgcolor="#A0A0A0"))
foot = TFOOT(TR(TH("Footer 1", _width="100%"),
_bgcolor="#E0E0E0"))
rows = []
for element in elements:
for i in range(count):
#col = i % 2 and "#F0F0F0" or "#FFFFFF"
rows.append(TR(
TD(element.question, _align="right"),
))
# make the table object
body = TBODY(*rows)
table = TABLE(*[head, foot, body],
_border="1", _align="right", _width="100%")
# define our FPDF class (move to modules if it is reused frequently)
class MyFPDF(FPDF, HTMLMixin):
def header(self):
#self.set_font('DIN Next LT Arabic', 'B', 15)
self.cell(0, 10, response.title, 1, 0, 'C')
self.ln(20)
def footer(self):
self.set_y(-15)
#self.set_font('DIN Next LT Arabic', 'I', 8)
txt = 'Page %s of %s' % (self.page_no(), self.alias_nb_pages())
self.cell(0, 10, txt, 0, 0, 'C')
pdf = MyFPDF()
pdf.add_font('DIN Next LT Arabic', '', r"DINNextLTArabic-Regular.ttf",
uni=True)
# first page:
pdf.add_page()
pdf.write_html(str(XML(table, sanitize=False)))
response.headers['Content-Type'] = 'application/pdf; charset=utf-8'
return pdf.output(dest='S')
2- create word documnet :
def documnet():
from gluon.contrib.pyrtf import *
import cStringIO,codecs
doc = Document()
ss = doc.StyleSheet
section = Section()
doc.Sections.append( section )
p = Paragraph( ss.ParagraphStyles.Heading1 )
p.append( str(T('Test')).encode('utf-8'))
section.append( p )
s = cStringIO.StringIO()
wrapper = codecs.getwriter("utf8")(s)
Renderer().Write(doc, wrapper)
wrapper.seek(0)
response.encoding = 'utf-8'
#response.headers['Content-Type'] = 'application/doc; charset=utf-8'
return response.stream(wrapper, attachment= True,
filename='yourdocument.rtf')
Both displayed the Arabic word with wrong encoding ? could you please
advise how can i do that ?
My second question is , Is there away to integrate with Birt from web2py ?
Thanks in advance.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.