ITextSharp错误地写了RTL单词

时间:2018-08-28 06:46:17

标签: c# itext pdf-generation right-to-left

我在使用ITextSharp编写一些名称文本时遇到了一些奇怪的事情–我正在编写一些文本,即“حبیباللهځاځی” 我尝试使用以下代码使用ITextSharp 5.5.13将此字符串写入PDF:

var fp = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), “arial.ttf”);
var bf = BaseFont.CreateFont(fp, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

…..

IList<AcroFields.FieldPosition> fieldPositions = frm.GetFieldPositions(fieldName);
AcroFields.FieldPosition fieldPosition = fieldPositions[0];
iTextSharp.text.Rectangle rec1 = fieldPosition.position;
var sizef = ColumnText.FitText(new Font(bf), ourstring, rec1, font_size, PdfWriter.RUN_DIRECTION_RTL);

Phrase px = new Phrase();
Chunk chunk = new Chunk(ourstring, new Font(bf, sizef));
px.Add(chunk);
ColumnText.ShowTextAligned(stamper.GetOverContent(i), Element.ALIGN_RIGHT,
                                            px, rec1.Right, rec1.Bottom - bf.GetDescentPoint(ourstring, sizef), 0, PdfWriter.RUN_DIRECTION_RTL,ColumnText.AR_LIG);

... 调试时,我确认名称正确发送

但是当我打开生成的文档时–文本显示错误,如下所示 enter image description here

当我从Adobe Acrobat Pro中打开该文件并进行编辑时–我看到分配的字体正确,即Arial  enter image description here 如果我将其更改为其他字体,然后再更改为Arial,则该文本将正确显示,应该是

enter image description here 我尝试了各种组合,使用阿拉伯语选项ColumnText.AR_XXX,但没有任何改变

有人对这里发生的事情有想法吗?

0 个答案:

没有答案