Я попытался отобразить смайлы с помощью поддерживаемого смайлами шрифта Noto Color Emoji (https://fonts.google.com/noto/specimen/Noto+Color+Emoji) с помощью Java-библиотеки PDFBox 3.0.3. Однако метод font.hasGlyph(codePoint) последовательно возвращает false для всех проверок доступности кодовых точек. Несмотря на это, рассматриваемые смайлы явно поддерживаются указанным шрифтом Google. Я включил код ниже. Может ли кто-нибудь любезно помочь мне определить причину этой проблемы?
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import java.io.File;
import java.io.IOException;
public class EmojiPdfExample {
public static void main(String[] args) {
try (PDDocument doc = new PDDocument()) {
File fontFile = new File("NotoColorEmoji-Regular.ttf");
var font = PDType0Font.load(doc, fontFile);
// Add a page
PDPage page = new PDPage();
doc.addPage(page);
try (PDPageContentStream cs = new PDPageContentStream(doc, page)) {
cs.beginText();
cs.setFont(font, 20);
cs.newLineAtOffset(50, 700);
// Emoji string
String text = "\uD83D\uDE00 \uD83D\uDE09";
for (int i = 0; i < text.length(); ) {
int codePoint = Character.codePointAt(text, i);
i += Character.charCount(codePoint);
String glyph;
try {
glyph = new String(Character.toChars(codePoint));
} catch (IllegalArgumentException e) {
System.err.println("Invalid code point: U+" + Integer.toHexString(codePoint));
continue; // Skip invalid code points
}
try {
if (font.hasGlyph(codePoint)) {
cs.showText(glyph);
} else {
// Handle unsupported glyphs
System.out.println("Unsupported glyph," + glyph);
}
} catch (IOException e) {
System.err.println("IOException while showing glyph: U+" + Integer.toHexString(codePoint));
}
}
cs.endText();
}
doc.save("emojis.pdf");
System.out.println("PDF created: emojis.pdf");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-not-work
Рендеринг эмодзи с помощью PDFBox не работает ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1737460994
Anonymous
Я попытался отобразить смайлы с помощью поддерживаемого смайлами шрифта Noto Color Emoji (https://fonts.google.com/noto/specimen/Noto+Color+Emoji) с помощью Java-библиотеки PDFBox 3.0.3. Однако метод font.hasGlyph(codePoint) последовательно возвращает false для всех проверок доступности кодовых точек. Несмотря на это, рассматриваемые смайлы явно поддерживаются указанным шрифтом Google. Я включил код ниже. Может ли кто-нибудь любезно помочь мне определить причину этой проблемы?
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import java.io.File;
import java.io.IOException;
public class EmojiPdfExample {
public static void main(String[] args) {
try (PDDocument doc = new PDDocument()) {
File fontFile = new File("NotoColorEmoji-Regular.ttf");
var font = PDType0Font.load(doc, fontFile);
// Add a page
PDPage page = new PDPage();
doc.addPage(page);
try (PDPageContentStream cs = new PDPageContentStream(doc, page)) {
cs.beginText();
cs.setFont(font, 20);
cs.newLineAtOffset(50, 700);
// Emoji string
String text = "\uD83D\uDE00 \uD83D\uDE09";
for (int i = 0; i < text.length(); ) {
int codePoint = Character.codePointAt(text, i);
i += Character.charCount(codePoint);
String glyph;
try {
glyph = new String(Character.toChars(codePoint));
} catch (IllegalArgumentException e) {
System.err.println("Invalid code point: U+" + Integer.toHexString(codePoint));
continue; // Skip invalid code points
}
try {
if (font.hasGlyph(codePoint)) {
cs.showText(glyph);
} else {
// Handle unsupported glyphs
System.out.println("Unsupported glyph," + glyph);
}
} catch (IOException e) {
System.err.println("IOException while showing glyph: U+" + Integer.toHexString(codePoint));
}
}
cs.endText();
}
doc.save("emojis.pdf");
System.out.println("PDF created: emojis.pdf");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79372448/rendering-emojis-using-pdfbox-does-not-work[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия