как печатать необычные символы в PDF (используя pdfbox)

1

Я пытаюсь создать новый PDF с нуля, но я не могу напечатать специальные символы правильно, например, я пытаюсь напечатать следующую строку в PDF:

『I like 《this string》 yeah.』

и получить

þÿ0I like 0this string0 yeah.0

Результат корректно печатается с помощью регистратора и println, кто-нибудь знает, как это сделать, все уже пробовали кодировку ascii как \u008A.

Есть идеи?

  • 0
    возможный дубликат использования PDFBox для записи строк в кодировке UTF-8 в PDF
  • 0
    уже пробовал, что нет результата, вроде лучше, но все равно не работает
Показать ещё 2 комментария
Теги:
encode
pdfbox

1 ответ

2
Лучший ответ

Теперь можно печатать символы utf-8 с помощью PDFBOX. Вам необходимо загрузить (https://github.com/apache/pdfbox) последнюю версию trunk и скомпилировать ее (вы можете скомпилировать ее, используя maven, это лучший вариант, верьте мне). Вторая вещь, которая вам нужна, это шрифт ttf, в котором вы используете glphys.

Код, который работает для меня:

package utftext;

import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType0Font;

public class utftext {

    public static void main(String[] args) throws Exception {
        PDDocument document = new PDDocument();
        PDPage page = new PDPage(PDRectangle.A4);
        document.addPage(page);
        PDType0Font font = PDType0Font.load(document, new File("E:\\arialuni.ttf"));
        PDPageContentStream stream = new PDPageContentStream(document, page);
        String text = "ssdfg #$%&&English 012 čćžšđ ČĆŽŠĐ as äöüÖÜÄ";
        stream.beginText();
        stream.setFont(font, 12);
        stream.moveTextPositionByAmount(50, 600);
        stream.drawString(text);
        stream.endText();
        stream.close();
        document.save("type0.pdf");
        document.close();
    }

}
  • 0
    Есть ли какой-либо источник для arialuni.ttf (или любого другого разумного шрифта Unicode), который имеет MIT, Apache, BSD или аналогичную лицензию?

Ещё вопросы

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