改变希伯来字母iText的书面文字方向

时间:2012-08-29 07:51:16

标签: java itext

当我在PDF上写希伯来字母时,它们从左到右显示。

如何改变方向?

我正在使用Paragraph

2 个答案:

答案 0 :(得分:2)

看看这个example

Document document = new Document(PageSize.A4);
String filename = ""; // Set the relative path and name for the output file
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
document.open();
// Fix the path to the font if needed
BaseFont bf = BaseFont.createFont("c:/windows/fonts/arial.ttf", BaseFont.IDENTITY_H, true);
Font font = new Font(bf, 14);
ColumnText column = new ColumnText(writer.getDirectContent());
column.setSimpleColumn(36, 770, 569, 36);
column.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
String text = "הטקסט שלך בעברית"; // Your text in hebrew
column.addElement(new Paragraph(text, font));
column.go();
document.close();

答案 1 :(得分:-1)

我已经制作了一些简单的函数来处理这个问题。它只是将文本翻转到另一侧并将其作为可以添加到文档的短语返回。 列的问题在于您需要准确了解要写入的位置的信息。另外,我建议使用PdfContentByte在更精确的位置写入。

public Phrase makingPhrases(string toPhrase, bool toReverse,int SF)
{

    BaseFont unicode = BaseFont.CreateFont(Server.MapPath("font/mriam.ttf"), BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Font bold = new Font(unicode, SF);
    if (toReverse)
        return new Phrase(revertText(toPhrase), bold);
    else
        return new Phrase(toPhrase, bold);
}
public string revertText(string revertTo)
{
    string toret = "";
    for (int i = 0; i < revertTo.Length; i++)
    {
        toret += revertTo[revertTo.Length - i - 1];
    }
    return toret.ToString();
}