iText - 在将html转换为pdf时添加带有文本的数字

时间:2017-08-13 12:23:24

标签: java html pdf itext

我正在使用带有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:

תאריך

感谢您的帮助。

0 个答案:

没有答案