我得到了一个Django HTML模板,其中包含一些编码的CSS部分。
@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 编写 URL 时,前面加上"/"xml2pdf 在下面抛出此错误:
异常类型:属性错误
异常值:"NoneType"对象没有属性"startswith">
在行
/home/www/env/lib/python2.7/site-packages/xhtml2pdf-0.1b3-py2.7.egg/xhtml2pdf/util.py ininit
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')