[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