wkhtmltopdf的字母间距太大

时间:2015-12-12 16:04:34

标签: wkhtmltopdf

我使用wkhtmltopdf将网页下载为pdf。

但是css属性字母间距似乎不起作用

font-size:20px; letter-spacing:0px;

enter image description here

font-size:20px; letter-spacing:1px;

enter image description here

1px的间距非常大......

我尝试使用2个不同的font-family

10 个答案:

答案 0 :(得分:3)

我有同样的问题,我将dpi设置为96(在wkhtmltopdf选项中)并且工作,但不确定为什么。

答案 1 :(得分:3)

用字母间距发出每一张脸,完美的解决方案就在这里。

import pdfkit
#SnippetBucket.com code for pdfkit
path_wkthmltopdf = r'/var/www/aukcnydom/wkhtmltox/bin/wkhtmltopdf'
config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
#more better and more accurate code for DPI set
config.default_options = {
        'page_size': 'A4',
        'print_media_type': True,
        'dpi': 96
    }
pdfkit.from_string(mark_safe(unicode(self.document)),settings.MEDIA_ROOT +"/"+ path, options=options, css=style,  configuration=config)

比在CSS中。添加你的字母间距。

p{letter-spacing: 0.4mm !important; text-align: justify ; font-kerning: normal; text-rendering: optimize-speed;}
/* SNIPPETBUCKET.COM, CSS CODE WITH LETTER SPACING */

这种方式可以简单地解决您的问题并完美地完成字母间距。

注意:我已提供样本,您可以在代码中应用适用的更改。

答案 2 :(得分:2)

这是一个众所周知的问题。 https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1575。没有解决它。只是为了避免使用字母间距

答案 3 :(得分:2)

字母间距在wkhtmltopdf中被打破。
但我找到了其他方法来进行字距调整:

你可以为每个字母设定位置。字距用于标题,因此通常没有太多字母。

2.您可以更改字体文件并设置所需的自定义字距。通常,改变拉丁字母就足够了。我测试过这个并且效果很好。使用FontForge(http://fontforge.github.io/)。但可能有一个更方便的软件。

答案 4 :(得分:1)

我有同样的问题,我已经通过

解决了这个问题
sudo wget http://pastebin.com/raw.php?i=AmfYN3er -O /etc/fonts/conf.d/10-wkhtmltopdf.conf

http://www.jeremydaly.com/how-to-install-wkhtmltopdf-on-amazon-linux/

答案 5 :(得分:1)

在Windows上使用wkhtmltopdf 0.12.4或0.12.5,您可以在TokenRequestValidationResult命令行上使用--dpi 300,几乎可以解决此问题。如果放大很多,您可能仍会注意到某些字母的间距差异可以忽略不计,但是字母不再重叠。并且使用wkhtmltopdf使其几乎完美。在我的方案中,渲染的pdf文件大小没有增加。

答案 6 :(得分:1)

我有同样的问题。我必须添加标记--disable-smart-shrinking,然后通过逐渐增大和减小来使用dpi。

    wkhtmltopdf --page-size A4 --print-media-type --lowquality --disable-smart-shrinking --encoding UTF-8 --no-outline --image-quality 100 --javascript-delay 3000 --orientation Portrait --dpi 65 --margin-top 0in --margin-right 0in --margin-bottom 0in --margin-left 0in "http://localhost:3000/wa/reports/"

答案 7 :(得分:0)

我们遇到了同样的问题。一种解决方法是将dpi标志设置为96

由于将DPI设置为如此低的值(打印通常使用至少300张)会导致图像模糊,因此我们尝试使用SVG字体文件来达到目的。

答案 8 :(得分:0)

在CSS中为主体添加以下代码

plugins {

id 'kotlin-android'
id 'kotlin-android-extensions'

和--dpi 200。 这对我有用。

答案 9 :(得分:0)

wkhtmltopdf 方面关于字母间距的计算有误。我设法将 100+ dpi 结果确定为正好那个倍数,将 dpi 视为“百分比”。换句话说:

  • 如果您使用 --dpi 500 进行渲染;确保将您的字母间距除以 5
  • 如果您使用 --dpi 300 进行渲染;确保将您的字母间距除以 3

您可以使用所有 --dpi 92 选项,但随后您会遇到字距调整不佳和图像模糊的问题,您需要再次解决所有这些问题。

在我的解决方案中,我进行了正则表达式替换,在将 html 字符串交给 wkhtmltopdf 之前,它会重新计算任何此类找到的字母间距。