PDF4NET:改变Canvas.DrawText()的方向

时间:2014-06-24 15:08:34

标签: .net vb.net drawtext

在我的一个应用程序中,我们使用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。所以不是我需要的结果。

我的想法是使用StrInverseinverse the order of my String并打印right to left。然而这最后一步一直困扰着我。我似乎找不到正确的方法/参数来改变打印String的方向。

所以我问你们所有人,你们有没有遇到同样的问题,你们是如何解决这个问题的?

感谢您的时间

更新:欢迎任何其他(非PDF4Net)解决方案。

注意:必须是.NET 2.0 Compatible

1 个答案:

答案 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.