【问题标题】:iText, Java - Two Certain Greek characters don't appear on the PDFiText、Java - PDF 上没有出现两个特定的希腊字符
【发布时间】:2011-07-26 08:17:32
【问题描述】:

我在 java 中使用 iText 并尝试制作一个简单的程序来创建一个包含希腊文本的 PDF 文件。 这是我的代码的一部分:

(...)
**public String url = "C:/Windows/Fonts/arial.ttf";**
public int size = 12;
**public String GREEK_CODEPAGE = "Cp1253";**
(...)
    public void createPdf(String filename, String INPUT)throws DocumentException, IOException {
        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream(filename));
        document.open();
        **BaseFont fonty = BaseFont.createFont(url , GREEK_CODEPAGE , true);
        Font myfonty = new Font(fonty, size, Font.NORMAL);
        document.add(new Paragraph(INPUT, myfonty));**
        document.close();        
    }

所以,我调用此方法并创建我的 PDF 文件,但由于某种原因,字符 “Δ”(Capital Delta)和“Ω”(Capital Omega)在我的文字中到处都被替换为 空格(所有其他字符,包括较低的 delta 和较低的 omega,都可以)。 我不确定这是否是一些小故障,或者我做了什么。我尝试使用其他支持希腊字符的代码页和字体,但仍然缺少这两个字符。你能帮助我吗?提前致谢。

【问题讨论】:

  • “INPUT”从何而来?我问,因为也许“Δ”和“Ω”看起来像是大写的希腊字母,但实际上可能完全不同。第二种选择是您使用的 Arial 字体由于某种原因缺少这两个字母。
  • INPUT 来自 main。在这种情况下,它是一个由所有希腊字母(大写字母和小写字母)、音调元音、专有标点符号和一些符号组成的字符串。 Arial 字体是标准的 Windows 字体,在 Word、Paint 等中没有这样的问题。

标签: java pdf character itext


【解决方案1】:

要修复带有希腊字母的问题,请更改编码:

BaseFont fonty = BaseFont.createFont(url, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
fonty.setSubset(true);

您可以选择仅嵌入字体的子集(第二行)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    相关资源
    最近更新 更多