Использование символов, генерирующих блоки (utf-8) в PDFBox

1

Я в настоящее время застрял в следующей проблеме: Создание документа с помощью PDFBox. Я хотел бы включить генерирующие символы символы, предпочтительно из Courier New. Для тех из вас, кто не должен знать, что такое bgcs, вот их картина:

Изображение 174551

В моем Java-классе я в настоящее время получил следующие строки.

contentStream.setFont(PDTrueTypeFont.loadTTF(doc, "pdf_content/cour.ttf") , 12);
contentStream.beginText();
contentStream.drawString("┼┌┐└┘│─┘├┤┬┴┼");
contentStream.endText();

К сожалению, как видно на выходе, они приводят к некоторым странным символам, а не к желаемым барам.

Изображение 174551

Кто-нибудь сталкивался с той же проблемой или имел какое-либо решение этой проблемы? Я мог бы также упомянуть, что печатные символы, такие как немецкий "Umlaute" ("äöüß"), отлично работают.

Заранее спасибо!

  • 0
    Это ошибка, по сути такая же, как и с символом € (ЕВРО), см. Этот ответ . По сути вам нужна замена для PDPageContentStream метода drawString .
  • 0
    Спасибо! приятно знать, что это ошибка, apache ничего об этом не показывал ..
Показать ещё 1 комментарий
Теги:
pdf-generation
utf-8
pdfbox

1 ответ

0

Экспортируя подмножество необходимых символов в новый шрифт и сопоставляя их с unicode 0041 до 004e и 0061 до 006e вы можете работать с этими символами с помощью клавиш AZ и a. PDFBox позволяет включать шрифт извне, используя следующий код:

contentStream.setFont( PDTrueTypeFont.loadTTF(doc, "pdf_content/bgcs.ttf"), 12);

Поскольку я искал бесплатную и хотя и рабочую программу для редактирования существующих шрифтов, я обнаружил, что fontforge и Type Light, похоже, понимают работу с символьными сопоставлениями (проверяется с помощью Type Light, поскольку fontforge больше относится к приложению linux/unix, встроить в Windows 8.1).

Надеюсь, это поможет кому-то споткнуться об этой ошибке метода drawString.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню