我的代码出现问题,导致用阿拉伯语写错误。
这是我的代码
Excel.Workbook MyBook = null;
Excel.Application MyApp = null;
Excel.Worksheet MySheet = null;
MyApp = new Excel.Application();
MyApp.Visible = false;
MyBook = MyApp.Workbooks.Open("C:/Users/ADmin/Desktop/TESTCSHARP.xlsx");
MySheet = (Excel.Worksheet)MyBook.Sheets[1]; // Explicit cast is not required here
int lastRow_A = MySheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row;
iTextSharp.text.Rectangle REC = new iTextSharp.text.Rectangle(936, 454);
Document nouveauDocument = new Document(REC.Rotate());
try
{
PdfWriter WRITER = PdfWriter.GetInstance(nouveauDocument, new FileStream("fichier_test.pdf", FileMode.Create));
nouveauDocument.Open();
try
{
PdfContentByte cb = WRITER.DirectContent;
cb.BeginText();
try
{
int XX = 15;
cb.SetFontAndSize(BaseFont.CreateFont(), 10);
float Y = (32 * (float)0.3937008) * 72;
float X = (XX * (float)0.3937008) * 72;
string arabname = "مرحبا العالم";
string ARIALUNI_TFF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF");
BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font f = new iTextSharp.text.Font(bf, 12, iTextSharp.text.Font.BOLD);
cb.SetFontAndSize(f.BaseFont, 10);
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, arabname, (float)10.7 * (float)0.3937008 * 72, (float)6.8 * (float)0.3937008 * 72, -90);
MyBook.Close();
}
finally
{
cb.EndText();
}
}
finally
{
nouveauDocument.Close();
WRITER.Close();
}
}
catch (DocumentException de)
{
Console.WriteLine("error " + de.Message);
}
catch (System.IO.IOException ioe)
{
Console.WriteLine("error " + ioe.Message);
}
nouveauDocument.Close();
pdf中此代码的结果是:
رينمم
反转而不像阿拉伯语写作
当我尝试使用此代码反转字符串时
char[] charArray = arabname.ToCharArray();
Array.Reverse(charArray);
arabname=charArray.ToString();
我的结果相同。
虽然我需要将منير链接起来,以PDF格式显示
请帮助,谢谢。
答案 0 :(得分:0)
尝试将字体设置为嵌入式,更改以下行:
BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
您还必须将此文字写入table
,RunDirection
设置为PdfWriter.RUN_DIRECTION_RTL
,以便将文字写入RTL。有关详细信息,请参阅Reversing Strings in Right To Left (BiDirectional) Languages in iTextSharp。
答案 1 :(得分:0)
我将相同的代码放入Reversing Strings in Right To Left (BiDirectional) Languages in iTextSharp。 我没有预期的结果,最糟糕的是我有一个空页。
并且不知道是什么问题,