html - @font-face 自定义字体无法使用 xhtml2pdf for django 正确呈现

标签 html css django font-face xhtml2pdf

我在尝试从 HTML 呈现 pdf 时尝试使用自定义字体。

我已经在 HTML 中试过了,字体显示出来了,所以字体的路径必须是正确的,而且它可能被正确使用了。字体类型为 .ttf,根据 http://xhtml2pdf-base.googlecode.com/hg/doc/xhtml2pdf-en.html 上的文档,它应该呈现,但它没有呈现。

这是我的样式标签中的内容:

@font-face {
  font-family: "Swiss";
  src: url("/static/font/swiss.ttf");
}
body {
  font-family: "Swiss";
  font-size: 12px;
}

和 html:

<body>
  asdf
</body>

我已经尝试了很多东西,去掉了字体 url 和字体系列的引号,我的正文被包裹在 HTML 标签中,所以 html 的格式正确。在网页中呈现时一切都很好,但在转换为 PDF 时无法正确呈现。谁能帮我找出错误?

最佳答案

最好的方法是使用回调来使用文件系统路径获取字体。更准确,而且您不会为每个资源(资源含义、字体、图像等)访问网络服务器

pisa.CreatePDF(html.encode("UTF-8"), file_object , encoding='UTF-8',
               link_callback=fetch_resources)

def fetch_resources(uri, rel):
    find_file_in_path_using_uri
    return path

顺便说一下,我认为你的问题是你还没有完成 collect static,所以字体实际上并不在/static/font/swiss.ttf。我的意思是它们不在 django 之外,而 xhtml2pdf 在 django 之外。我不是 100% 确定。

关于html - @font-face 自定义字体无法使用 xhtml2pdf for django 正确呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14489223/

相关文章:

css - 访问Asp的css :Button

python - 在 Celery 中,如何运行一个任务,然后让该任务运行另一个任务,并继续运行?

django-tinymce 现代主题

python - 定期任务在 Django Celery 中不起作用

javascript - 通过创建 HTML 表来调用 javascript 函数

javascript - 如何从 DropDown 中选定的选项获取标题属性的值

CSS .cur 光标格式

javascript - 如何通过 JavaScript 在自定义 CSS 文件中创建类?

html - iText 5 可以将 PDF 转换为 HTML 吗?

jquery:如果鼠标事件发生在另一个 div 上,则防止 div 隐藏