Я недавно обнаружил новую опцию сжатия jsPDF. Я также поигрался с добавлением пользовательских шрифтов, которые поддерживают иностранные символы помимо Engli sh при создании PDF. Всякий раз, когда я использую параметр сжатия и задаю для него значение true, некоторые из пользовательских шрифтов не отображаются в PDF. Специально упрощенный китайский, корейский и японский. Конечно, я мог бы просто не использовать опцию сжатия, но приятно иметь сжатый PDF.
смотреть код: здесь
import React from 'react';
import './App.css';
import jsPDF from 'jspdf';
// arial-unicode-ms.ttf font converted to base64
import { base64Str } from './base64';
function App() {
const genPDF = () => {
const doc = new jsPDF({
compress: true,
orientation: 'p',
unit: 'px',
format: 'a4'
});
// ADDING FONT FILE
doc.addFileToVFS('unicodeMS.ttf', base64Str);
doc.addFont('unicodeMS.ttf', 'unicodeMS', 'normal');
doc.setTextColor(255, 0, 0);
doc.setFillColor(135, 124,45,0);
console.log(doc.getFontList());
console.log(base64Str);
doc.setFont('unicodeMS');
const x = 30,
y = 30;
doc.text('Vietnamese: Chào thế giới', x, y);
doc.text('Chinese: 你好,世界', x, y+15);
doc.text('Arabic: مرحبا بالعالم', x, y+30);
doc.text('Hebrew: שלום עולם', x, y+45);
doc.text('Japanese: こんにちは世界', x, y+60);
doc.text('English: Hello world', x, y+75);
doc.text('Korean: 안녕하세요 세계', x, y+90);
window.open(doc.output('bloburl'));
};
return (
<div className="App">
<button onClick={genPDF}>test pdf gen</button>
</div>
);
}
export default App;