带有Wicked PDF和字母间距问题的HTML到PDF

时间:2012-08-17 16:32:22

标签: wkhtmltopdf pdfkit wicked-pdf

使用0.79和0.7.2生成的PDF看起来与我原来的HTML略有不同。添加show_as_html标志会按预期显示它,但是内联样式在PDF中的处理方式不同,然后它们在HTML预览中。

具体来说,我遇到的问题是字母间距声明也没有正确呈现浮点数。因此,例如在具有字母间距的右浮动元素上,PDF将使字符过多地与中心隔开,使得文本部分地离开屏幕而不是进一步向左突出以获得字母间距宽度的差异。

以下是原始HTML代码段:

           

        

<table width="800" border="0">

  <tr>
    <td colspan="3"><span style="font-family:Helvetica, Arial, sans-serif;font-size:10pt;margin-top:18px;text-transform:uppercase;float: right;letter-spacing:2pt">Winter 2013</span></td>
  </tr>
</table>

  

以下是执行渲染的代码:

render :pdf => 'file_name', :template => 'template.html.erb', :layout => 'pdf.html'

以下是呈现的HTML:http://jsfiddle.net/wX4DQ/

以下是输出的PDF:http://imgur.com/sdUPM

我注意到有关wkhtmltopdf的一些错误报告似乎与此有关。这可能是这个问题的罪魁祸首,什么是可接受的解决方案?

我尝试过不同的字体,但我真的不得不使用Helvetica。

关于这里做什么或合理的解决方案的任何建议?

2 个答案:

答案 0 :(得分:2)

有很多事情可能会导致文本呈现和字母间距出现问题。如果您使用二进制文件,请尝试获取针对QT编译的二进制文件。如果你自己编译wkhtmltopdf,请确保你编译它的系统安装和注册了一组不错的字体,或者字体看起来不正确。

此外,这一点css可以提供帮助,尤其是复制/粘贴在某些字符之间有随机的额外空格:

body { text-rendering: optimize-speed; }

答案 1 :(得分:0)

我遇到了类似的问题,我设法通过使用Google导入的@import url('https://fonts.googleapis.com/css?family=Open+Sans'); body { font-family: "Open Sans"; } 来更改问题。更多细节和可能的解决方案可以在this question中找到。简而言之,这是解决问题的代码:

#decorators.py
from django.contrib.auth.decorators import user_passes_test


def superuser_required(func):
    return user_passes_test(
        lambda u: u.is_authenticated() and u.is_superuser)(func)



# views.py
@superuser_required
def dashboard_candidates(request):
    persons = Person.objects.all()
    return render(request, 'my_template.html', {'persons': persons})