【问题标题】:jspdf text stretched in MS Edge在 MS Edge 中拉伸的 jspdf 文本
【发布时间】:2019-05-24 23:32:23
【问题描述】:

我最近在我们的 Ember 应用程序中添加了一行文本到 jspdf 驱动的 PDF 操作中。它在 Chrome、Firefox、Safari 等中看起来不错,但在 Edge 中,字符间距不正常 - 它非常宽,因此延长了行并导致文本重叠(此行右对齐,而更多的文本左对齐) .以下是相关代码:

  doc.setFont('Helvetica').setTextColor(153, 153, 153).setFontSize(size);
  doc.text(string, this.get('positioning').rightEdge, yPos, { 'align': 'right' });

(positioning 是一个包含一堆用于文档位置的幻数的对象,stringyPossize 是整数方法参数。doc 是要添加到的 jsPDF 对象,如果这并不明显。)

这是它在 Chrome 中的样子(即我们想要看到的):

这是边缘结果:

我试过左对齐文本,但它仍然被拉伸。更改大小似乎也无济于事。如果我将 charSpacing 参数的负值传递给 doc.text() 调用,我可以缓解问题,但这会破坏其他浏览器;我只需要为 Edge 传递这个论点,感觉真的很笨拙。

为什么 jspdf 和/或 Edge 会这样做,我该怎么办?

ETA:我发现(对我而言)这种情况只会发生在围绕对 Date.Prototype.toLocaleDateString() 的调用构建的字符串中,如下所示:

`Draft - Printed on ${Date.now().toLocaleDateString('en-us', dateFormatOptions)} at ${Date.now().toLocaleTimeString('en-us', timeFormatOptions)}`;

所以 jspdf 有本地化字符串的问题,也许?

【问题讨论】:

  • 与问题本身无关,但试图解决这个问题也发现了这个问题:stackoverflow.com/q/56259199/306084
  • 可以查看JSpdf是否支持Edge浏览器。参考:github.com/MrRio/jsPDF/issues/280 在此链接中,Edge 未在此处列出。如果您认为 JSpdf 正式支持它,那么您可以就该问题咨询他们。他们可以提供一些提示可能有助于缩小问题范围。
  • 谢谢,@Deepak-MSFT!我找到了答案,这与toLocaleDateString()toLocaleTimeString() 的输出中的RTL 字符有关。去掉这些,问题就消失了。

标签: microsoft-edge jspdf


【解决方案1】:

这是IE's toLocaleString has strange characters in results 的另一种情况:Edge 正在向toLocaleDateString()toLocaleTimeString() 的输出添加unicode 格式字符,它们导致jspdf 做奇怪的事情。使用正则表达式去除 RTL 字符可以解决此问题。

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多