作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在与 PdfSharp 合作创建一些 pdf 文件。一切正常,除非我尝试使用 Drawstring 方法以从右到左的语言(例如波斯语)将一些文本放入文件中。尽管我在 XPdfFontOptions 中选择了 Unicode 编码和合适的字体系列(例如,“B Nazanin”),但它会离散地绘制字母。
Here是我得到的图像。
B.T.W,有没有更好的方法来创建pdf文件?
最佳答案
您需要反转字母,然后反转整个字符串。
我自己需要它,所以它经过测试和工作:
public static string ReverseString(this string str)
{
StringBuilder sb = new StringBuilder();
foreach (char c in str.Reverse())
{
sb.Append(c);
}
return sb.ToString();
}
public static string RightToLeft(this string str)
{
List<string> output = str.Split(' ').Select(s => s.Any(c => c >= 1424 && c <= 1535) ? s.ReverseString() : s).ToList();
output.Reverse();
return string.Join(" ", output.ToArray());
}
private void DrawStringBoxRightToLeft(XGraphics gfx, string text, XFont font, XBrush brush, XRect rect)
{
List<string> words = text.Split(' ').ToList();
List<string> sentences = new List<string>();
while (words.Any())
{
while (gfx.MeasureString(string.Join(" ", sentences), font).Width < rect.Width && words.Any())
{
string s = words[0];
sentences.Add(s);
words.RemoveAt(0);
}
gfx.DrawString(string.Join(" ", sentences).RightToLeft(), font, brush, rect, XStringFormats.TopRight);
rect.Y += font.Height;
sentences.Clear();
}
}
关于c# - PdfSharp XGraphics.DrawString 不适用于波斯语等从右到左的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11321015/
我正在与 PdfSharp 合作创建一些 pdf 文件。一切正常,除非我尝试使用 Drawstring 方法以从右到左的语言(例如波斯语)将一些文本放入文件中。尽管我在 XPdfFontOptions
我正在使用 PDFsharp 生成 pdf,但我无法使用 XGraphics 类。有人可以告诉我如何使用 XGraphics 类或者我需要在应用程序中添加的 dll 和命名空间是什么。实际上我必须在我
我对设置XGraphics的剪切区域有点困惑,pdfSharp只提供了一个方法IntersectClip,这意味着如果我想改变剪切区域,该区域会越来越小(与之前的区域相交),有没有人知道无论如何自由设
我是一名优秀的程序员,十分优秀!