2012-08-29 62 views
2

当我在PDF上书写希伯来语字母时,他们从左到右出现。更改希伯来语字母书写文字的方向iText

我该如何改变方向?我正在使用Paragraph

+1

的可能重复的[java的iText的创建与希伯来语(RTL)PDF和英文](http://stackoverflow.com/questions/5855078/java-itext-create-pdf-with-hebrew-rtl-and -english) –

+0

你是否从html或“手动”创建pdf? – iddqd

+0

@iddqd“手动” –

回答

1

看一看这个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(); 
+0

我有你的代码的一些错误,这工作column.RunDirection = PdfWriter.RUN_DIRECTION_RTL; String text =“הטקסטשלךבעברית”; //你的希伯来语文字 column.AddElement(new Paragraph(text,Gisha)); column.Go(); – Harry

0

我做了一些简单的函数来处理这个问题。它只是将文本翻转到另一边,并将其作为可添加到文档中的短语返回。 与列的问题是,您需要准确的信息,你要写的地方。另外我建议使用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(); 
}