Ну, мне нужно было использовать шрифт, который поддерживает символы Юникода для генерации PDF-файлов из jsPDF, чтобы служить моей цели. Например, знак «€», поскольку он генерировал гиббер, когда использовались встроенные шрифты jsPDF, так как он не поддерживает символы Юникода.

Однако хорошая новость заключается в том, что вы можете использовать пользовательские шрифты истинного типа (ttf), и многие из них поддерживают символы Юникод в формате ttf, и моя проблема, описанная выше, решена.

Теперь плохие новости или следующий побочный эффект после генерации PDF, если кто-то пытается скопировать точный текст из PDF и хочет вставить его в другое место, например, текстовый файл, документ Word и т. Д., Генерирует это:

" ࣆࣆGROODUGROODUORWRIGROODUࣆࣆKDKDLDPULFK "

Вместо:

"€ € евро евро много евро ... € - ха-ха, я богат ..."

Мы попробовали все возможные способы обхода с настройками acrobat pdf. Ничто не работает в частности. Скачал и перепробовал много разных шрифтов, но не нашел решения.

Jspdf версия 1.4.1.

Любая идея, почему это происходит или какое-либо решение для этого?

Любая помощь будет очень благодарна.

Спасибо.

-1
Jayanta 13 Фев 2020 в 15:08

2 ответа

Лучший ответ

Ну, проблема была с версией jspdf. Эта проблема была решена в 1.5.0, и версия, которую я использовал, была 1.4.1

Смотрите примечания к выпуску: https://github.com/MrRio/jsPDF/releases

Перейти к: фиксация "c53beb6": в словаре шрифтов теперь есть запись toUnicode, чтобы можно было скопировать вставку из средства просмотра PDF.

1
Jayanta 19 Фев 2020 в 16:21

Изменить . Я попытался воссоздать вашу проблему. Я использовал jsPDF так же, как вы jsPDF, и я заставил его работать довольно быстро. Пожалуйста, скажите мне, если это то, что вы хотели.

Вот рабочий пример codepen

var doc = new jsPDF()

doc.text('€€Hello world!€€', 10, 10);

function save() {
    doc.save('a4.pdf');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/" crossorigin="anonymous"></script>
<button onclick="save()">Click me to download the PDF</button>


Сначала я предложил вам реализовать cmap, но это будет слишком много, потому что вам нужно будет переназначить каждый символ, как описано здесь Реализация таблицы cmap с таблицей cmap.

Просто попробуйте мой приведенный выше код, надеюсь, он поможет, а в противном случае дайте мне знать, если возникнут дополнительные проблемы.


Обратите внимание, что в тексте из созданного PDF-файла также есть знак евро, поэтому это должно решить вашу проблему.

0
TrueJu 13 Фев 2020 в 17:56