iText的:无法打印数学字符,如∈,∩,Σ,∫,Δ√,∠iText的:无法打印数学字符,如∈,∩,

2019-05-12 13:08发布

我利用iText 4.0.2版本的PDF生成。 我有一些字符/符号打印像∈,∩,Σ,∫,Δ(数学符号)和其他许多人。 我的代码:

  Document document = new Document(PageSize.A4, 60, 60, 60, 60);
        try
        {
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("/home/adeel/experiment.pdf"));

            document.open();

            String str = "this string will contains special character like this  ∈, ∩, ∑, ∫, ∆";

        BaseFont bfTimes = null;
        try {
            bfTimes = BaseFont.createFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.EMBEDDED);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Font fontnormal = new Font(bfTimes, 12, Font.NORMAL, Color.BLACK);
         Paragraph para = new Paragraph(str, fontnormal);
         document.add(para);

        document.close();
        writer.close();

        System.out.println("Done!");
    } catch (DocumentException e)
    {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

在上面的代码,我把所有的符号str和生成的PDF文件。 代替的符号我试图把Unicode字符在str的符号,但它没有工作过。

Answer 1:

请大家看看MathSymbols例子。

  • 首先,你需要一个支持你所需要的符号字体。 顺便说一下,FreeSans.ttf是这样的字体。 然后,你需要使用正确的编码。
  • 您正在使用UNICODE,所以你需要Identity-H作为编码。
  • 您还应该使用符号,如\u2208\u2229\u2211\u222b\u2206 。 这不是必须的,但它是很好的做法。

这是它是如何做:

public static final String DEST = "results/fonts/math_symbols.pdf";
public static final String FONT = "resources/fonts/FreeSans.ttf";
public static final String TEXT = "this string contains special characters like this  \u2208, \u2229, \u2211, \u222b, \u2206";

public void createPdf(String dest) throws IOException, DocumentException {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Font f = new Font(bf, 12);
    Paragraph p = new Paragraph(TEXT, f);
    document.add(p);
    document.close();
}

结果如下: math_symbols.pdf

重要提示:你应该总是使用的iText的最新官方版本。 iText的4.0.2 不是一个正式版本。



文章来源: iText : Unable to print mathematical characters like ∈, ∩, ∑, ∫, ∆ √, ∠
标签: itext