Арабские иероглифы в шрифте Дубая из HTML-контента в PDF с использованием iText5 - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь создать PDF-файл из HTML-документа с арабским шрифтом с именем Дубай Шрифт.После преобразования некоторые арабские символы не отображаются в PDF.В html-файле шрифт Дубай работает правильно, но не после преобразования несколько символов арабского языка не отображаются в PDF.

Я пробовал пример ParseHtml9 , упомянутый в этот вопрос переполнения стека .

Используется jar itext: itextpdf-5.5.8.jar.

Обратите внимание: - Этот код работает полностью, как и ожидалось, при использовании арабского языка Noto Naskh.шрифт.Проблема возникает только при использовании шрифта Дубай.

ParseHtml9.java: -

Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));

// step 3
document.open();

// step 4
// Styles
CSSResolver cssResolver = new StyleAttrCSSResolver();

XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontProvider.register("resources/Dubai-Regular.ttf");

CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);

HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());

// Pipelines
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

// XML Worker
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
p.parse(new FileInputStream(HTML), Charset.forName("UTF-8"));

// step 5
document.close();

HTML-файл: -

<body>
<table>
  <tr>
    <td>Lawrence of Arabia</td>
    <td dir="rtl" style="font-family: Dubai">لورانس العرب</td>
  </tr>
</table>
</body>
</html>

Вывод HTML: -

Лоуренс Аравийский لورانس العرب

PDF Вывод: - Лоуренс Аравийский لونس لعر

Несколько символов, таких как ر, ا и بне отображаются в PDF.

Пожалуйста, помогите мне исправить это.Заранее спасибо.

...