jspdf текст растягивается в MS Edge - PullRequest
0 голосов
/ 22 мая 2019

У меня есть строка текста, которую я недавно добавил в действие PDF, управляемое jspdf, в нашем приложении Ember. В Chrome, Firefox, Safari и др. Все выглядит хорошо, но в Edge интервал между символами неуместен - он очень широкий, что удлиняет линию и вызывает наложение текста (эта строка выравнивается по правому краю с большим количеством текста, выровненным по левому краю) , Вот соответствующий код:

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

(positioning - это объект с кучей магических чисел для местоположений документа, а string, yPos и size - целочисленные аргументы метода. doc - это объект jsPDF, добавляемый, если это не очевидно.)

Вот как это выглядит в Chrome (то есть, что мы хотим видеть): Screenshot of Chrome output

Вот результат Edge: enter image description here

Я пытался выровнять текст по левому краю, и он все еще растянут. Изменение размера, похоже, тоже не помогает. Если я передам отрицательное значение для аргумента charSpacing в вызов doc.text(), я смогу смягчить проблему, но тогда это повредит другие браузеры; Мне нужно будет передать этот аргумент только для Эджа, который кажется действительно глупым.

Почему jspdf и / или Edge делают это, и что я могу с этим поделать?

ETA: Я обнаружил, что это происходит (для меня) только со строкой, построенной вокруг вызова Date.Prototype.toLocaleDateString(), например:

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

Значит, у jspdf проблема с локализованными строками?

1 Ответ

0 голосов
/ 24 мая 2019

Оказывается, это еще один случай toLocaleString в IE имеет странные символы в результатах : Edge добавляет символы форматирования Юникода в выходные данные toLocaleDateString() и toLocaleTimeString(), и они заставляют jspdf делать странные вещи. Использование регулярного выражения для удаления символов RTL решает проблему.

...