Я пытаюсь создать 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.
Пожалуйста, помогите мне исправить это.Заранее спасибо.