Я пытаюсь применить некоторые изменения в библиотеке jsPDF, чтобы иметь возможность оправдывать текст.
Мне трудно найти правильное значение для Tw (интервал слова).
В jspdf.js (L: 1413) Я добавил этот код:
if (align) {
...
else if (align === 'justify') {
left = x;
}
else {
throw new Error('Unrecognized alignment option, use "center" or "right".');
}
prevX = x;
text = '(' + da[0];
let pdfPageWidth = this.internal.pageSize.width;
let wordSpacing;
if( align === 'justify' ) {
let fontSize = this.internal.getFontSize();
let nWords = da[0].trim().split(/\s+/).length;
let textWidth = this.getStringUnitWidth(da[0].replace(/\s+/g, '')) / this.internal.scaleFactor;
wordSpacing = (Math.max(0, (pdfPageWidth - textWidth) / Math.max(1, nWords - 1));
wordSpacing += ' Tw\n';
text = wordSpacing + text;
}
...
}
Идея заключалась в том, чтобы извлечь ширину пространства, выполнив (pageWidth - textWidth)/numberOfWords -1. Я не могу получить правильное пространство слов.
Пример вывода
BT
/F1 16 Tf
18.4 TL
0 g
28.35 756.85 Td
19.00357142857142 Tw
(And a little bit it adélkfjalké.) Tj
ET
Есть ли проблема с кодировкой?
Спасибо за вашу помощь.