Вставляет гиббери sh при копировании текста из PDF, созданного из jsPDF - PullRequest
0 голосов
/ 13 февраля 2020

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

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

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

"ࣆࣆGROODUGROODUORWRIGROODUࣆࣆKDKDLDPULFK"

вместо:

"€ евро евро лот евро €аж - ха-ха, я богат ... "

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

jspdf версия 1.4.1.

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

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

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

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

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

0 голосов
/ 13 февраля 2020

Редактировать: Я пытался воссоздать вашу проблему. Я использовал 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.

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


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

...