[reportlab-users] Wrong characters displayed with AcrobatReader

Robin Becker robin at reportlab.com
Mon Apr 7 12:41:03 EDT 2008


Paolo G. Cantore wrote:

> Dear all,

>

> I want to use Reportlab for generating PDF documents with TrueType fonts

> including thai, chinese, japanese and korean characters / graphs.

>

> My tests look very promising as I am able to generate PDFs which are

> displayed and printed correctly with xpdf or evince (standard viewer for

> Gnome). But to my absolute surprise the same PDFs are not displayed

> correctly with AcrobatReader. There must be an astonishing algorithm

> implemented in AcrobatReader which converts in a random manner one

> character into another in the whole document.

>

> Please try to open the attached PDF with AdobeReader and you'll see what

> I mean. In the PDF all "c" characters are converted to "Y" characters

> (Certificate ==> CertifiYate). In other cases I had "a" converted to

> "7". When you open the PDF with xpdf or other viewers all is okay.

>

> The font used is Norasi (UTF-8 unicode) but the same applies to Cyberbit.

>

> Is this a known behaviour of AcrobatReader?

> Am I doing something wrong?

> Do you have any suggestions or work around how to avoid this displaying

> problem?

>

> Thank you!

.......
Paulo we use acrobat reader with Asian characters so I don't think it's just
acrobat. Your PDF didn't arrive so perhaps you forgot to attach or it's too big.

Don't send to the list if it's huge send it me direct and I'll take a look.
Since you mention evince I guess you're linux/bsd alike.

As for the problem itself it seems very strange. Presumably you're passing utf8
into the string drawing code after mentioning that you're using a particular
font. We use an automatic subsetting scheme (by Marius Gedminas) to avoid
embedding the whole font, but I believe the default is to assume the first 128
characters are used (which makes european text reasonable).

If you want to do some simple experiments can you try stuff really simply ie
this does work in windows acrobat. Use your font and see how the results are?

##########################################
from reportlab import rl_config
rl_config.pageCompression = 0
rl_config.invariant = 1
from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase.pdfmetrics import registerFont
from reportlab.pdfbase.ttfonts import TTFont
registerFont(TTFont('testfont',r'\WINDOWS\Fonts\msmincho.ttc'))
c = Canvas('testfont.pdf')
c.setStrokeColor((1,0,0))
c.setFillColor((0,0,1))
c.setLineWidth(0.5)
c.setFont('testfont',10,12)
for i,s in enumerate((
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz',
'0123456789',
u'\u5974\u5a41\u5b17',
)):
c.drawString(72,7*72-i*12,s)
c.showPage()
c.save()
##########################################
--
Robin Becker


More information about the reportlab-users mailing list