我正在使用带有RTL
字体的iText,例如example。
它工作正常但是当文本有数字或其他字符如/:()
时,数字和字符不会显示在pdf中,这里是我的html:
<div dir="rtl" style="font-family: Noto Sans Hebrew;border: 5px solid blue;font-weight: bold;position:relative;bottom:70px">תאריך 18.10.2010
</div>
转换方式与示例相同:
public void createPdf(String file, String htmlString, String pathToTTF)
throws IOException, DocumentException {
// step 1
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(pathToTTF);
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(htmlString), Charset.forName("UTF-8"));
// step 5
document.close();
}
和oputput:
תאריך
感谢您的帮助。