При добавлении пользовательских шрифтов в jsPDF некоторые из них не работают, если для параметра сжатия установлено значение true - PullRequest
1 голос
/ 28 февраля 2020

Я недавно обнаружил новую опцию сжатия 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;

...