[reportlab-users] TrueType fonts and barcode widgets

J. R. Carroll jrcarroll at jrcresearch.net
Tue Feb 26 23:52:21 EST 2013


Quickly looking at this, could it be that you are trying to embed a font
that does not exists? (your stack shows it's happening when you save the
pdf)...

Perhaps the line that reads:
*
*


> *italic='Courier New Italicc'*, (extra c?)



Not sure if that's a typo, but you might want to do some debugging to make
sure all your fonts are available and are usable in a separate reportlab
instance. If that doesn't fix the problem (and no one else responds with
the solution) let me know.

-J

----


J. R. Carroll
Independent Researcher through Hurtz Labs
Research Methods, Test Development, and Statistics
www.jrcresearch.net
www.ontvp.com
Cell: (650) 776-6613
Email: jrcarroll at jrcresearch.net
jrcarroll at hurtzlab.com
jrc.csus at gmail.com
<https://www.facebook.com/J.R.Car>
<https://twitter.com/jNammer><http://www.linkedin.com/in/jrcarroll>



On Tue, Feb 26, 2013 at 11:23 PM, Markos Kapes <mkapes at gmail.com> wrote:


> When using True Type fonts as prescribed in the documentation, I get a

> value error if I use a unicode font with a barcode widget if I don't also

> set the font of the barcode widget to the same font. For the time being,

> it's not a big deal as it still gets the job done, but I'm curious what I

> might be doing wrong. The code works fine with builtin 'Courier' but if I

> try a system unicode font, it chokes unless I make sure barcode has the

> same font.

>

> Thanks,

> --Markos Kapes

>

> The code relevant code is as follows, followed by the stack trace.

> rl_config.warnOnMissingFontGlyphs = 1

> registerFont(TTFont('Courier New', 'Courier New.ttf'))

> registerFont(TTFont('Courier New Bold', 'Courier New Bold.ttf'))

> registerFont(TTFont('Courier New Italic', 'Courier New Italic.ttf'))

> registerFont(TTFont('Courier New Bold Italic', 'Courier New Bold

> Italic.ttf'))

> registerFontFamily('Courier New', normal='Courier New', bold='Courier

> New Bold', italic='Courier New Italicc', boldItalic='Courier New Bold

> Italic')

>

> font = 'Courier New'

> font_size = 9

> doc_width = 2.4*inch

> doc_height = 2*inch

> margin = 0.1*inch

> tmpfile = tempfile.NamedTemporaryFile(delete=False)

>

> canvas1 = canvas.Canvas(tmpfile, (doc_width, doc_height))

> #change coordinates so origin is now at left bottom margin corner

> canvas1.translate(margin, margin)

> text_object = canvas1.beginText()

> text_object.setFont(font, font_size)

> text_object.setTextOrigin(0, column_height-margin)

> text_object.textOut( title)

> text_object.moveCursor(120, 0)

> text_object.textLine(price)

> canvas1.drawText(text_object)

> #create barcode and draw it at the origin.

> barcode1=barcode.createBarcodeDrawing('EAN13', value=isbn,

> validate=True, width= column_width, height=1.4*inch, humanReadable=True,

> fontName=font)

> renderPDF.draw(barcode1, canvas1, 0,0)

> canvas1.showPage()

> canvas1.save()

>

>

> ---------------------------------------------------------------------------

> ValueError Traceback (most recent call last)

> /Library/Python/2.7/site-packages/ipython-0.14.dev-py2.7.egg/IPython/utils/py3compat.pyc

> in execfile(fname, *where)

> 177 else:

> 178 filename = fname

> --> 179 __builtin__.execfile(filename, *where)

>

> /Users/mkapes/Documents/Developer/git_repos/infoshopkeeper/specialOrderLabel.py

> in <module>()

> 92 canvas1.save()

> 93

> ---> 94 print_special_order_label(isbn=isbn, booktitle=booktitle,

> author=author, price=price, customer_name=customer_name,

> customer_phone=customer_phone, customer_email=customer_email)

>

> /Users/mkapes/Documents/Developer/git_repos/infoshopkeeper/specialOrderLabel.py

> in print_special_order_label(isbn, booktitle, author, price, customer_name,

> customer_phone, customer_email)

> 90 canvas1.drawText(text_object)

> 91 canvas1.showPage()

> ---> 92 canvas1.save()

> 93

> 94 print_special_order_label(isbn=isbn, booktitle=booktitle,

> author=author, price=price, customer_name=customer_name,

> customer_phone=customer_phone, customer_email=customer_email)

>

> /Library/Python/2.7/site-packages/reportlab/pdfgen/canvas.pyc in save(self)

> 1192 After this operation the canvas must not be used

> further."""

> 1193 if len(self._code): self.showPage()

> -> 1194 self._doc.SaveToFile(self._filename, self)

> 1195

> 1196 def getpdfdata(self):

>

> /Library/Python/2.7/site-packages/reportlab/pdfbase/pdfdoc.pyc in

> SaveToFile(self, filename, canvas)

> 234 filename = utf8str(filename)

> 235 f = open(filename, "wb")

> --> 236 f.write(self.GetPDFData(canvas))

> 237 if myfile:

> 238 f.close()

>

> /Library/Python/2.7/site-packages/reportlab/pdfbase/pdfdoc.pyc in

> GetPDFData(self, canvas)

> 246 # realize delayed fonts

> 247 for fnt in self.delayedFonts:

> --> 248 fnt.addObjects(self)

> 249 # add info stuff to signature

> 250 self.info.invariant = self.invariant

>

> /Library/Python/2.7/site-packages/reportlab/pdfbase/ttfonts.pyc in

> addObjects(self, doc)

> 1124 if doc.compression:

> 1125 cmapStream.filters = [pdfdoc.PDFZCompress]

> -> 1126 pdfFont.ToUnicode = doc.Reference(cmapStream,

> 'toUnicodeCMap:' + baseFontName)

> 1127

> 1128 pdfFont.FontDescriptor =

> self.face.addSubsetObjects(doc, baseFontName, subset)

>

> /Library/Python/2.7/site-packages/reportlab/pdfbase/pdfdoc.pyc in

> Reference(self, object, name, InstanceType)

> 534 other = idToObject[name]

> 535 if other!=object:

> --> 536 raise ValueError, "redefining named object:

> "+repr(name)

> 537 return PDFObjectReference(name)

> 538 if iob:

>

> ValueError: redefining named object: 'toUnicodeCMap:AAAAAA+CourierNewPSMT'

> >

> /Library/Python/2.7/site-packages/reportlab/pdfbase/pdfdoc.py(536)Reference()

> 535 if other!=object:

> --> 536 raise ValueError, "redefining named object:

> "+repr(name)

> 537 return PDFObjectReference(name)

> _______________________________________________

> reportlab-users mailing list

> reportlab-users at lists2.reportlab.com

> http://two.pairlist.net/mailman/listinfo/reportlab-users

>

>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/reportlab-users/attachments/20130226/aa9a3561/attachment.html>


More information about the reportlab-users mailing list