在itextsharp中旋转文本/垂直文本

我需要垂直文本或只是一种在ITextSharp中旋转ColumnText的方法。

(它需要绝对的位置)

直到现在我已经尝试了很多不同的解决方案,但没有运气。

这是几次尝试:

1。

_cb.SetFontAndSize(BaseFont.CreateFont(), 12f); _cb.ShowTextAligned(Element.ALIGN_CENTER, "Hello World", 50, 50, 90); 

2。

 var vt = new VerticalText(_cb); vt.SetVerticalLayout(50, 50, 400, 8, 30); vt.AddText(new Chunk("asdasd",_sf.ChildBackPageTextOneFont())); vt.Go(); 

3。

 System.Drawing.Drawing2D.Matrix foo = new System.Drawing.Drawing2D.Matrix(); foo.Rotate(90); _cb.ConcatCTM(foo); 

我也尝试用System.Drawing.Graphics绘制它,但质量非常差。

有解决方案吗 谢谢。

我已经从网上尝试了很多方法来解决这个旋转问题。 但它们都没有奏效。 最后我想出了一个简单的解决方案。 也许我们可以这样做。 我们可以绘制一个没有边框的表格,只有一个单元格。 我们在单元格中添加文本,最后旋转单元格。 一切都好。

  table = new PdfPTable(1); table.TotalWidth = 72; paragraph = new Paragraph("123"); cell = new PdfPCell(paragraph); cell.Rotation = 270; cell.BorderWidth = 0; table.AddCell(cell); table.WriteSelectedRows(0, -1, 72, 72, writer.DirectContent); 

此外,WriteSelectedRows方法可以定位此单元格。

实际上最简单的方法与你的第一次尝试相似。 你只需要像这样添加对BeginText()EndText()的调用

 _cb.SetFontAndSize(BaseFont.CreateFont(), 12f); _cb.BeginText(); _cb.ShowTextAligned(Element.ALIGN_CENTER, "Hello World", 50, 50, 90); _cb.EndText(); _cb.Stroke(); 

这是ShowTextAligned的文档

找到答案:

使用这样的东西:

 Imports System.Drawing, System.Drawing.Drawing2D Dim transf as new Matrix transf.RotateAt(30,New PointF(100,100), MatrixOrder.Append) writer.DirectContent.Transform(transf) transf.Invert() writer.DirectContent.Transform(transf) 

旋转canvas,写入一些文本,然后将其旋转回来。