在wicked-pdf中使用自定义(urdu)字体

时间:2018-06-24 18:39:14

标签: css ruby-on-rails pdf fonts wicked-pdf

我正在Wicked pdf中使用Rails 4应用程序生成pdf。我需要在pdf中渲染urdu字体。遵循NikhilAshitaka的两个答案后,我从here下载了Jameel Noori Nastaleeq字体,将它们安装在我的本地文件中,并将其添加到assets/fonts文件夹中。预编译资产后,在我的pdf.scss

中定义字体系列
@font-face {
  font-family:"Jameel Noori Nastaleeq";
  src:url("Jameel Noori Nastaleeq/Jameel Noori Nastaleeq.ttf");
  font-weight: bold;
}
.urdu-font {
  font-family: 'Jameel Noori Nastaleeq';
}

我的pdf查看文件如下

%head
  %meta{:charset => "utf-8"}   
    = wicked_pdf_stylesheet_link_tag 'pdf'
%body.urdu-font
  = render "custom_form"

其中_custom_form.pdf.haml部分包含包含urdu文本的输入字段。

Urdu字体在pdf和调试模式下都可以在本地正常工作,但是在部署时,它不能在pdf文件中正确显示,而在调试模式下可以很好地显示

在调试模式下,我检查了字体资源的路径,即src:url(file:////home/deploy/<remote-location>/releases/20180622133137/public/assets/Jameel Noori Nastaleeq/Jameel Noori Nastaleeq-39c54f1646a6a4f68408f3a26400e457cb1e52226c284d8c4ab36a3363520e0f.ttf) 在这种html调试模式下,看起来不错,并且字体实际上可以很好地渲染。

P.S。我还看到了这个post,它正在使用googleapi提供的远程字体。我已经尝试过了并且可以使用,但是我想使用本地字体资源。

1 个答案:

答案 0 :(得分:0)

WickedPDF可以使大多数资产作为file://引用,因为您的内容在使用wkhtmltopdf呈现之前已被呈现到临时文件,但这确实给ajax调用和字体带来了一些问题。

您可以通过对字体资产进行base64编码并内联以下内容来绕过从file加载问题:

url('<%= wicked_pdf_asset_base64('yourfile.ttf') %>')