如何解决无法在 C# 中正确打印阿拉伯/波斯字母
我在使用 printdocument 在 C# 中打印键入的阿拉伯字母时遇到问题。
这是我的代码:
PrintDocument pd;
PaperSize ps;
void pd_Factor(object sender,PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Font vazir = new Font("Vazir Code FD",12,FontStyle.Regular);
SolidBrush sb = new SolidBrush(Color.Black);
string a = "سلام";
g.DrawString(a,vazir,sb,200,330);
}
private void btnDone_Click(object sender,EventArgs e)
{
PrintDocument pd = new PrintDocument();
PaperSize ps = new PaperSize("Factor",723,1024);
pd.PrintPage += new PrintPageEventHandler(pd_Factor);
pd.PrintController = new StandardPrintController();
pd.DefaultPageSettings.Margins.Left = 0;
pd.DefaultPageSettings.Margins.Right = 0;
pd.DefaultPageSettings.Margins.Top = 0;
pd.DefaultPageSettings.Margins.Bottom = 0;
pd.DefaultPageSettings.PaperSize = ps;
printDialog1.Document = pd;
if (printDialog1.ShowDialog() == DialogResult.OK)
{
try
{
pd.Print();
}
catch (Exception)
{
}
}
}
遗憾的是,上面的代码是这样打印的:
顺便说一下,我试过了
StringFormat format = new StringFormat();
format.FormatFlags = StringFormatFlags.DirectionRightToLeft;
g.DrawString(a,330,format);
所以,我自己想,我应该把它反过来:
string a = "سلام";
string b = "";
for (int i = a.Length - 1; i > -1; i--)
{
b += Convert.ToString(a[i]);
}
它看起来仍然有问题,但它变得更好了。
但是我尝试使用字符映射从左到右添加字符。
我的代码改为:
string a = "ﻡﺎﻠﺳ";
顺便说一下,我有一个输入,但我不知道文本是什么;所以,我不能为此使用字符映射。
我的问题是:如何正确打印?
注意:我使用的字体是this;不过我也尝试过使用 Tahoma,但问题仍然存在。
解决方法
看起来很奇怪,但神奇地解决了问题!
我尝试使用另一个名为“Print2Pdf”的应用程序进行测试,文本打印正确,可能是 Microsoft XPS 编写器/阅读器的错误,无法打印/读取阿拉伯语/波斯语字母。
*很抱歉没有提供 Print2Pdf 的链接,因为我找不到原始网站;如果有人知道原文请加链接;谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。