Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法用C正确打印阿拉伯语/波斯语字母#_C#_Printing_Printdocument - Fatal编程技术网

C# 无法用C正确打印阿拉伯语/波斯语字母#

C# 无法用C正确打印阿拉伯语/波斯语字母#,c#,printing,printdocument,C#,Printing,Printdocument,我在使用printdocument用C#打印阿拉伯字母时遇到问题 这是我的密码: printdocumentpd; 纸张大小的ps; 无效pd_系数(对象发送方,PrintPageEventArgs e) { 图形g=e.图形; Font vazir=新字体(“vazir代码FD”,12,FontStyle.Regular); SolidBrush sb=新的SolidBrush(颜色为黑色); 字符串a=“سلام”; g、 抽绳(a、瓦齐尔、sb、200、330); } 私有void btn

我在使用printdocument用C#打印阿拉伯字母时遇到问题

这是我的密码:

printdocumentpd;
纸张大小的ps;
无效pd_系数(对象发送方,PrintPageEventArgs e)
{
图形g=e.图形;
Font vazir=新字体(“vazir代码FD”,12,FontStyle.Regular);
SolidBrush sb=新的SolidBrush(颜色为黑色);
字符串a=“سلام”;
g、 抽绳(a、瓦齐尔、sb、200、330);
}
私有void btnDone_单击(对象发送者,事件参数e)
{
PrintDocument pd=新的PrintDocument();
PaperSize ps=新纸张尺寸(“系数”,723,1024);
pd.PrintPage+=新的PrintPageEventHandler(pd_系数);
pd.PrintController=新标准PrintController();
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;
如果(printDialog1.ShowDialog()==DialogResult.OK)
{
尝试
{
pd.Print();
}
捕获(例外)
{
}
}
}
遗憾的是,上面的代码是这样打印的:

顺便说一下,我试过了

StringFormat-format=新的StringFormat();
format.FormatFlags=StringFormatFlags.DirectionRightToLeft;
g、 抽绳(a、瓦齐尔、sb、200、330、格式);
它只是使锚点的位置从左上到右上:

所以,我想我应该把它倒过来:

string a=“سلام”;
字符串b=“”;
对于(int i=a.长度-1;i>-1;i--)
{
b+=转换为字符串(a[i]);
}
它使文本看起来像这样:

它看起来仍然不对,但进展得更好

不过,我尝试使用角色映射从左到右添加角色

我的代码改为:

字符串a=”ﻡﺎﻠﺳ";
而且打印正确:

顺便说一下,我有一个输入,我不知道文本将是什么;所以,我不能使用字符映射

此外,似乎不可能或很难编写代码来替换文本;至少我需要这些字符:

我的问题是:如何正确打印


注意:我使用的字体是;但是我也尝试过使用Tahoma,但问题仍然存在。

看起来很奇怪,但问题神奇地解决了

我尝试使用另一个名为“Print2Pdf”的应用程序进行测试,文本打印正确,可能是Microsoft XPS writer/reader的一个错误,无法打印/读取阿拉伯语/波斯语字母


*很抱歉没有提供Print2Pdf的链接,因为我找不到原始网站;如果有人知道原始网站,请添加链接;谢谢

这是否回答了您的问题?问题在于编码,我对方向有问题?没有,我尝试搜索了您使用的打印驱动程序?是PCL还是PS驱动程序?请确保您使用的是PS d因为您使用的是PS字体。