在我的一个应用程序中,我们使用PDF4NET
将数据打印到pdf文件中。为此目标,我们使用方法DrawText
。
现在出现的问题是,对于特定国家/地区/标签(阿拉伯语),方向必须从Left to Right
更改为Right to Left
目前打印文字的方法:
page.Canvas.DrawText(strObj, mainXmlNode.PDFFont, Nothing, pdfnode.PDFBrush, pdfnode.X , pagePosY, pdfnode.Angle)
DrawText的方法定义
Public Sub DrawText(ByVal text As String, ByVal font As O2S.Components.PDF4NET.Graphics.PDFFont,
ByVal pen As O2S.Components.PDF4NET.Graphics.PDFPen,
ByVal brush As O2S.Components.PDF4NET.Graphics.PDFBrush,
ByVal x As Single, ByVal y As Single,
ByVal orientation As Single)
将方向/角度更改为+180
或-180
会导致文本被绘制upsidedown
。所以不是我需要的结果。
我的想法是使用StrInverse到inverse the order of my String
并打印right to left
。然而这最后一步一直困扰着我。我似乎找不到正确的方法/参数来改变打印String的方向。
所以我问你们所有人,你们有没有遇到同样的问题,你们是如何解决这个问题的?
感谢您的时间
更新:欢迎任何其他(非PDF4Net)解决方案。
注意:必须是.NET 2.0 Compatible
答案 0 :(得分:0)
我找到了解决方案:
方法DrawText
有另一个定义:
Public Sub DrawText(ByVal text As String,
ByVal font As O2S.Components.PDF4NET.Graphics.PDFFont,
ByVal pen As O2S.Components.PDF4NET.Graphics.PDFPen,
ByVal brush As O2S.Components.PDF4NET.Graphics.PDFBrush,
ByVal x As Single,
ByVal y As Single,
ByVal orientation As Single,
ByVal align As O2S.Components.PDF4NET.Graphics.Shapes.TextAlign)
不要被Align
这个名字解雇。这实际上并不像在textbox
内那样对齐。虽然它有相同的可能性:
BottomCenter
BottomLeft
BottomRight
MiddleCenter
...
使用对齐的Drawtext
- 方法时,它将开始向其方向打印。
示例
Public Sub DrawText("abc",....,12,14,0,TextAlign.BottomRight)
这将从abc
开始打印(x= 12 & y=14)
,但所有字母都打印在该点左侧,以c
如下所示(通过近似)x=12 & y=14
:
abc.