加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – wicked_pdf在unicode pdf转换(ruby)上显示未知

发布时间:2020-12-17 04:38:31 所属栏目:百科 来源:网络整理
导读:我正在尝试使用wicked_pdf(版本1.1)和wkhtmltopdf-binary gems从html页面创建pdf. 我的html页面包含一个日历表情符号,可以在浏览器中很好地显示我使用的任何字体 !DOCTYPE htmlhtmlhead meta charset="utf-8" meta http-equiv='content-type' content='text/
我正在尝试使用wicked_pdf(版本1.1)和wkhtmltopdf-binary gems从html页面创建pdf.
我的html页面包含一个日历表情符号,可以在浏览器中很好地显示我使用的任何字体
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv='content-type' content='text/html; charset=utf-8' />
  <style>
  unicode {
     font-family: 'OpenSansEmoji',sans-serif;
  }
  @font-face {
     font-family: 'OpenSansEmoji';
     src: url(data:font/truetype;charset=utf-8;base64,<-- encoded_font_base64_string-->) format('truetype');
  }
 </style>
 </head>
 <body>
 <div><unicode>&#128197;</unicode></div>
 </body>
 </html>

但是,当我尝试使用rails控制台中gem的WickedPdf.new.pdf_from_html_file方法生成PDF时,

File.open(File.expand_path('~/<--pdf_filename-->.pdf'),'wb+') {|f| f.write  WickedPdf.new.pdf_from_html_file('<--absolute_path_of_html_file-->')}

我得到以下结果:

PDF result with unknown character

如您所见,第一个日历图标已正确显示,但是显示第二个字符,我们不知道它来自何处.

我已经通过编码UTF-8和UTF-16以及代理对调查了这个相关的帖子stackoverflow_emoji_wkhtmltopdf,并查看了这个问题wkhtmltopdf_git_issue,但仍然无法让这个角色消失!

如果您有任何线索,那就非常受欢迎了.

在此先感谢您的帮助!

编辑

根据Eric Duminil和petkov.np的评论,我可以确认 – 上面的代码在Linux上适用于我.这似乎是Linux vs MacOS问题.任何人都可以建议MacOS绑定中的核心问题以及是否可以修复?

解决方法

我已多次编辑此答案,请参阅最后的注释以及注释.

我正在使用macOs 10.12.2并遇到同样的问题.我列出了所有的浏览器等版本,虽然我怀疑最大的因素是OS / wkhtmltopdf版本.

> Chrome:版本55.0.2883.95(64位)
> Safari:版本10.0.2(12602.3.12.0.1)
> wkhtmltopdf:0.12.3(补丁qt)

我正在使用以下示例代码段:

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html" charset="utf-8">
    <style type="text/css">
      p {
        font-family: 'EmojiSymbols',sans-serif;
      }
      @font-face {
        font-family: 'EmojiSymbols';
        src: local('EmojiSymbols-Regular.woff'),url('EmojiSymbols-Regular.woff') format('woff');
      }

      span:before {
        content: '1F60B';
      }
    </style>
  </head>
  <body>
    <p>                        

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读