Недавно мне пришла в голову идея создать биллинговое приложение с помощью React js, и я попытался использовать пакет JsPDF для создания PDF-файла. Но, к сожалению, он не работает должным образом со шрифтами на тамильском языке. Поэтому я искал лучший пакет npm и заставил его работать с PDFmake. Приходите, давайте рассмотрим, как импортировать шрифт и создать PDF-файл с помощью пакета PDFmake.

Необходимое условие:

  • Возможно, нам потребуется установить React js, а также включить пакет PDFmake в наш проект, чтобы начать работу.

npx create-react-app ‹project_name›
npm и pdfmake

  • Также вам может понадобиться загрузить наши необходимые шрифты (файл с расширением .ttf) из Google или из любого другого места, где они доступны. Я скачал шрифт на тамильском языке отсюда — Tiro font. Нажав кнопку Загрузить семейство, вы загрузите шрифты.

Преобразование шрифта в файл base64:

  • Первым шагом будет преобразование шрифта в файл base64, чтобы мы могли использовать его в нашем файле PDF.
  • Загрузите загруженный файл шрифта (TiroTamil-Regular.ttf) на следующий веб-сайт — ссылка.
  • После этого вы получите файл, преобразованный в текст в кодировке base64.
  • Скопируйте этот закодированный текст.

Экспорт закодированного шрифта в наш проект React:

  • Создайте файл с именем «TrioTamil-Regular.js».
  • Вставьте скопированный закодированный текст и экспортируйте постоянный шрифт,
export const font = "<your_encoded_text_should_be_pasted_here>"

Импорт требуемого шрифта:

  • Теперь пришло время импортировать необходимый шрифт в наш проект React js.
  • Используя приведенные ниже команды импорта, мы импортируем pdfmake и шрифты для создания нашего PDF-файла.
//importing pdfmake to generate our PDF file
import pdfMake from "pdfmake/build/pdfmake"
//importing the fonts whichever present inside vfs_fonts file
import pdfFonts from "pdfmake/build/vfs_fonts"
//importing the encoded font file into our project
import {font} from './TiroTamil-Regular'
//Making use of all the fonts defined
pdfMake.vfs = pdfFonts.pdfMake.vfs
//Adding our own font into the vfs
window.pdfMake.vfs["TiroTamil-Regular.ttf"] = font

Создание PDF-файла:

  • Внутри файла App.js нашего реактивного проекта допустим только один тег ‹div›.
  • Внутри тега ‹div› создайте кнопку, которая вызовет функцию с именем printPDF, как показано ниже.
  • Теперь давайте напишем нашу функцию printPDF() для создания файла PDF,
  • Наш окончательный файл App.js будет выглядеть следующим образом:

Создание файла PDF из нашего проекта:

  • Все готово! Теперь нам нужно запустить наш проект React с помощью следующей команды:
npm run start
  • Теперь вы откроете домашний экран нашего проекта с кнопкой printPDF,

  • Нажмите на кнопку printPDF, вы получите файл PDF с текстом, который вы упомянули в содержимом.

Ура!! мы сделали. Хотите узнать больше о PDFmake? Вы можете воспользоваться их игровой площадкой — нажмите здесь.

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

Удачного кодирования!