在MS Edge中拉伸的jspdf文本

时间:2019-05-22 17:30:08

标签: microsoft-edge jspdf

我最近在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是整数方法参数。{{1} }是要添加的jsPDF对象(如果不太明显)。

这是Chrome中的外观(即我们想要看到的): Screenshot of Chrome output

以下是Edge结果: enter image description here

我已经尝试过将文本左对齐,但仍处于拉伸状态。更改大小似乎也无济于事。如果我将doc参数的负值传递给charSpacing调用,则可以缓解该问题,但是这会破坏其他浏览器;我只需要为Edge传递该参数,这感觉就很麻烦。

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

ETA:我发现这种情况(对我来说)只发生在调用doc.text()的字符串周围,就像这样:

Date.Prototype.toLocaleDateString()

所以jspdf可能存在本地化字符串的问题?

1 个答案:

答案 0 :(得分:0)

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