【问题标题】:using custom (urdu) font in wicked-pdf在 wicked-pdf 中使用自定义(乌尔都语)字体
【发布时间】:2018-12-03 09:40:50
【问题描述】:

我正在使用 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 字体在本地在 pdf 和调试模式下都可以正常工作,但是在部署时,它不能在 pdf 文件中正确呈现,而在调试模式下却可以正常呈现。

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

附:我还看到了这个post,它使用了googleapi 提供的远程字体。我已经尝试过了,它可以工作,但我想使用本地字体资源。

【问题讨论】:

  • 为什么要在 @font-face 声明中添加 font-weight: bold;?您的常规体重@font-face 规则在哪里?
  • 正如我提到的 Ashitaka's answer 。我只是希望我的字体默认为粗体,所以我没有找到任何理由删除它。
  • @Mike'Pomax'Kamermans 在您指出@font-face 声明之后。我搜索并发现它只会为粗体字符声明字体。但是,删除之后,问题仍然存在。字体不会在 pdf 上呈现,但在 html 上呈现良好。
  • 我对那个 file:/// 链接有点困惑,因为它绝对不能在浏览器中工作(出于非常好的安全原因,您的浏览器不应该查看外部您正在加载的文件所在的目录)。
  • 该文件链接位于项目目录中,字体文件放置在预编译后放置其他资产(如 javascript 和 css 文件)的位置。所以没什么好担心的。浏览器读取该文件没有问题。

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,这需要使用hamlerb 文件来渲染css,但它解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多