Как отображать китайские символы в pdf, используя itextg 5.5.9 в android [duplicate]

Использовать iframes. Это обходной путь, но отлично работает.

Maxime написал на нем статью .

4
задан ManoDestra 13 July 2016 в 16:57
поделиться

1 ответ

Ясно, что вы используете неправильный шрифт. Я загрузил шрифты из указанной вами ссылки. Вы используете NotoSerif-Bold.ttf, шрифт, который не поддерживает китайский язык. Однако ZIP-файл также содержит шрифты с CJK в имени шрифта. Как описано на сайте, на который вы ссылаетесь, CJK означает китайский, японский и корейский языки. Используйте один из этих шрифтов CJK, и вы сможете воспроизводить китайский текст в своем PDF-файле.

Взгляните на NotoExample , в котором я использую один из шрифтов из ZIP-файл, на который вы ссылаетесь. Он создает PDF-файл, который выглядит так:

enter image description here [/g2]

Это код, который я использовал:

public static final String FONT = "resources/fonts/NotoSansCJKsc-Regular.otf";
public static final String TEXT = "These are the protagonists in 'Hero', a movie by Zhang Yimou:\n"
    + "\u7121\u540d (Nameless), \u6b98\u528d (Broken Sword), "
    + "\u98db\u96ea (Flying Snow), \u5982\u6708 (Moon), "
    + "\u79e6\u738b (the King), and \u9577\u7a7a (Sky).";
public static final String CHINESE = "\u5341\u950a\u57cb\u4f0f";
public static final String JAPANESE = "\u8ab0\u3082\u77e5\u3089\u306a\u3044";
public static final String KOREAN = "\ube48\uc9d1";

public void createPdf(String dest) throws IOException, DocumentException {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream(DEST));
    document.open();
    Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Paragraph p = new Paragraph(TEXT, font);
    document.add(p);
    document.add(new Paragraph(CHINESE, font));
    document.add(new Paragraph(JAPANESE, font));
    document.add(new Paragraph(KOREAN, font));
    document.close();
}

Вы утверждаете, что Adobe Reader XI не показывает китайские глифы, но вместо этого отображает сообщение «Не удается извлечь встроенный шрифт». Я не могу воспроизвести это [*]. Я даже использовал Preflight в Adobe Acrobat, как указано здесь здесь , но ошибок не обнаружено:

enter image description here [/g3]

[*] Обновить : эту проблему можно воспроизвести, если вы используете iText 4.2.x, версию, выпущенную кем-то неизвестным iText Group NV. Используйте только версии iText, превышающие 5.

6
ответ дан Bruno Lowagie 20 August 2018 в 13:01
поделиться
  • 1
    Спасибо за подробный ответ. Проблема была неправильной версией iText. Если вы выходите из maven, убедитесь, что используете новые версии & lt; dependency & gt; & Lt; идентификатор_группа & GT; com.itextpdf & л; / идентификатор_группа & GT; & Lt; артефакт & GT; itextpdf & л; / артефакт & GT; & Lt; & версии GT; 5.5.5 & л; / & версии GT; & Lt; / зависимость & GT; & Lt; & зависимость GT; & Lt; идентификатор_группа & GT; com.itextpdf & л; / идентификатор_группа & GT; & Lt; артефакт & GT; IText-азиатский & л; / артефакт & GT; & Lt; & версии GT; 5.2.0 & л; / & версии GT; & Lt; / зависимость & GT; – vsingh 25 March 2015 в 14:07
  • 2
    Тот же пример не работает, если мы заменим NotoSanCJKsc-Regular на SourceHanSansSc-Regular. На самом деле я попробовал тот же пример с шрифтами Source Han Sans и Serif. Символы CJK невидимы для созданного pdf. Есть ли у iText проблемы с семейством Source Han? – Vaibhav Raj 2 June 2017 в 09:28
  • 3
    @VaibhavRaj Вы уже пробовали iText 7? Вы клиент iText? Если в семействе Source Han есть ошибка, вы должны спросить у поставщика шрифтов Source Han для поддержки. Если вы хотите, чтобы мы посмотрели на это, у вас должен быть контракт с нами. – Bruno Lowagie 2 June 2017 в 10:53
  • 4
    В настоящее время мы используем iText 5.5. – Vaibhav Raj 2 June 2017 в 11:52
Другие вопросы по тегам:

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