Задать вопрос
@shmaroder
https://creditpower.ru

Возможно ли в либе pdf-lib на js заюзать русские шрифты?

Задача, в готовом пдф, вычилить страницу последнюю, в ней по координатам написать 4 строчки текста в рамке, и рядом влепить картинку png или jpg. Штамп ECP в общем.

Подключил в angular2 PDF-LIB. Все прекрасно, но при попытке написать что-либо на русском падает. Кто нибудь сталкивался? Возможно ли подружить библу с русским языком и как?

Может аналог кто знает подобной библиотеки, работающий с русскими символами.
  • Вопрос задан
  • 669 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@SeLive
По умолчанию PDF-LIB использует шрифты с кодировкой ANSI. Достаточно загрузить в библиотеку сторонний шрифт, например Microsoft Sans Serif, через метод embedFont() и указывать нужный шрифт при написании текста.

// Загружаем PDF
		const url = 'https://pdf-lib.js.org/assets/with_update_sections.pdf'
		const existingPdfBytes = await fetch(url).then(res => res.arrayBuffer())
		// Загружаем шрифт с поддержкой русского языка, в данном случае это Microsoft Sans Serif
		const url2 = 'https://db.onlinewebfonts.com/t/643e59524d730ce6c6f2384eebf945f8.ttf'
		const fontBytes = await fetch(url2).then(res => res.arrayBuffer())

		const pdfDoc = await PDFDocument.load(existingPdfBytes)

		// Устанавливаем шрифт
		let customFont;
		if (fontBytes) {
			pdfDoc.registerFontkit(fontkit);
			await pdfDoc.embedFont(fontBytes);
			customFont = await pdfDoc.embedFont(fontBytes);
		}

		const pages = pdfDoc.getPages()
		const firstPage = pages[0]

		const { width, height } = firstPage.getSize()

		firstPage.drawText('Привет мир!', {
			x: 5,
			y: height / 2 + 300,
			size: 50,
			font: customFont, // Указываем наш кастомный шрифт
			color: rgb(0.95, 0.1, 0.1),
			rotate: degrees(-45),
		})


Важно подключить в проекте pdf-lib/fontkit, что бы зарегистрировать шрифт в библиотеке через registerFontkit().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы