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

using custom (urdu) font in wicked-pdf

我正在使用 Wicked pdf to generate pdf in rails 4 application. I need to render urdu fonts in pdf. Following these two answers by Nikhil and Ashitaka, I downloaded Jameel Noori Nastaleeq font from here,将它们安装在我的本地并添加到 assets/fonts 文件夹中。预编译资源后,在我的 pdf.scss

中定义了 font-family
@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 部分包含包含乌尔都语文本的输入字段。

乌尔都语字体在 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 提供的远程字体。我试过这个并且它有效但我想使用本地字体资源。

WickedPDF 使大部分资源可用作 file:// 参考,因为您的内容在使用 wkhtmltopdf 呈现之前会呈现到临时文件,但这确实会给 ajax 调用和字体带来一些问题.

您可以绕过从 file 加载的问题,方法是对字体资源进行 base64 编码并将其内联:

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