我得到了带有一些经过编码的CSS部分的Django HTML模板。

@font-face {
    font-family:"Arial";
    src: url(/static/fonts/Arial.ttf);
}
@font-face {
    font-family:"Arial_Black";
    src: url(/static/fonts/Arial_Black.ttf);
}


当我在CSS中用'/'xml2pdf开头的URL时,在下面抛出此错误:


  异常类型:AttributeError
  
  异常值:“ NoneType”对象没有属性“ startswith”


在线

/ init中的/home/www/env/lib/python2.7/site-packages/xhtml2pdf-0.1b3-py2.7.egg/xhtml2pdf/util.py

line: 621. if self.mimetype.startswith('text'): ...


如果删除“ /”,则xml2pdf开始工作,但模板无法加载字体文件。
我该如何工作?

最佳答案

当我深入研究它时,真正的问题终于显示出它自己是哑剧类型问题。

当我检查所有步骤时,我发现了问题。第一步,xml2pdf尝试查找文件的mime类型,并且看起来Python 2.7.6没有.ttf文件的mime类型描述。

>>> from mimetypes import MimeTypes
>>> import urllib
>>> url = urllib.pathname2url('static/fonts/Arial.ttf')
>>> mime = MimeTypes()
>>> mime_type = mime.guess_type(url)
>>> print mime_type
(None, None)
>>> url = urllib.pathname2url('wsgi.py')
>>> mime_type = mime.guess_type(url)
>>> print mime_type
('text/x-python', None)


我在下面添加了以下行以纠正问题:

import mimetypes
mimetypes.add_type('application/font-ttf', '.ttf')

07-26 09:04