2016-07-13 3 views
2

Я хочу сгенерировать pdf-файл с использованием JavaScript на стороне клиента. Сначала я попытался использовать jsPdf API. Но он не работает с символом Юникода, как на китайском.Библиотека генерации JavaScript pdf с поддержкой Unicode

Есть ли возможность улучшить jspdf для поддержки Unicode или любой другой библиотеки, которая поддерживает Unicode.

Pdfmake API говорит, что поддерживает Unicode, но когда я попробовал, он также не работает, я проверил там пример демонстрации размещения символа Unicode.

Я попытался с помощью pdfkit в Node.js, но PDF не получает создан правильно

var PDFDocument = require("pdfkit"); 
var fs = require('fs'); 

var doc = new PDFDocument; 

doc.pipe(fs.createWriteStream('output.pdf')); 

doc.fontSize(15); 
doc.text('Generate PDF! 漢字漢字漢字漢字'); 

doc.end(); 

В PDF он создан как Создать PDF! о "[Wo" [Wo "[Wo" [W

Кроме того, я могу добавить несколько шрифтов в pdfMake

var fontDescriptors = { 
    Roboto: { 
     normal: 'examples/fonts/Roboto-Regular.ttf', 
     bold: 'examples/fonts/Roboto-Medium.ttf', 
     italics: 'examples/fonts/Roboto-Italic.ttf', 
     bolditalics: 'examples/fonts/Roboto-Italic.ttf' 
    } 
    }; 

    var printer = new pdfMakePrinter(fontDescriptors); 
+0

'есть ли возможность для повышения jspdf для поддержки Unicode или любая другая библиотека, которая поддерживает Unicode', конечно, есть способ - https://github.com/MrRio/jsPDF#contributing. Его раскрывается, чтобы вы могли внести свой вклад в это изменение – llamerr

+0

, пытались ли вы проверить проблемы по этому поводу в любом из проектов и создать его, если его нет? – llamerr

+0

Я не пытаюсь создать новую библиотеку, но пытаюсь найти, существует ли какая-либо библиотека для решения моей проблемы. @ Llamerr – Sumeet

ответ

2

Я опишу решение с использованием Node.js и PDFKit, так как вы упоминали, но он также применяется к pdfmake, который внутренне использует PDFKit.

В большинстве случаев шрифт по умолчанию, используемый в этих библиотеках, не принимает китайских символов. Вы должны добавить и использовать шрифты, которые совместимы для языков, которые вам нужны для поддержки. Например, если мы принимаем pdfmake, они используют Roboto в качестве шрифта по умолчанию, и он действительно не принимает иероглифы.

Используя ваш пример кода, мы можем добавить поддержку для китайского использования Microsoft YaHei шрифта (msyh.ttf), например только с 1 дополнительной строкой коды:

var PDFDocument = require("pdfkit"); 
var fs = require('fs'); 

var doc = new PDFDocument; 

doc.pipe(fs.createWriteStream('output.pdf')); 

doc.font('fonts/msyh.ttf'); 
doc.fontSize(15); 
doc.text('Generate PDF! 漢字漢字漢字漢字'); 

doc.end(); 

Вывод будет выглядеть следующим образом:

PDF Output

+0

Нужно ли шрифт для каждого типа Unicode, я просто пытался использовать язык хинди, ему нужен еще один шрифт , Есть ли способ поддерживать все шрифты или поддерживать несколько шрифтов в одном? @HiDeo – Sumeet

+0

Встроенные шрифты поддерживают только кодировку WinANSI, поэтому вам действительно нужно добавить шрифты. Трюк заключается в том, что вы можете добавить многократные шрифты или даже подмножества шрифтов. Поскольку большинство шрифтов охватывает только более 100 000 скриптов и наборов символов UTF-8, вам необходимо точно определить, что вам нужно, и найти 1 или несколько шрифтов, которые будут покрывать ваши потребности. – HiDeo

+0

Я хочу поддержать китайский/немецкий/французский/английский/арабский/латинский, откуда я могу скачать/получить шрифты? @HiDeo – Sumeet

Смежные вопросы