Hello,
I can’t seem to figure out text rotation and the alignment of the content within a cell. I have tried all permutation of Vertical and Horizontal alignment and I cant get the text centered when rotated 90.
Testing further we are also experiencing issues with other rotation angle and alignments. There are even cases where the content is not displayed or shown outside the intended cell. Rotation 0 works but the others do not.
Below is an example:
AsposePDFRotation.pdf (7.9 KB)
static void Main(string[] args)
{
Aspose.Pdf.License license = new Aspose.Pdf.License()
{
Embedded = true
};
license.SetLicense("Aspose.Pdf.lic");
var pdf = new Document();
var rotations = new double[] {
0, //ok
45, //?
90, //??? (barf)
//135, //no real world use
//180, //no real world use
};
foreach (double r in rotations)
{
var page = pdf.Pages.Add();
page.Paragraphs.Add(new TextFragment($"Rotation:{r}"));
var table = new Table();
table.ColumnWidths = COL(Enum.GetNames(typeof(HorizontalAlignment)).Length);
foreach (HorizontalAlignment h in Enum.GetValues(typeof(HorizontalAlignment)))
{
var row = table.Rows.Add();
row.MinRowHeight = (PageSize.PageLetter.Height-50) / Enum.GetNames(typeof(HorizontalAlignment)).Length;
foreach (VerticalAlignment v in Enum.GetValues(typeof(VerticalAlignment)))
{
var tf = new TextFragment($"H: {(h.ToString())} ({(int)h}), V:{v.ToString()} ({(int)v})");
tf.TextState.Rotation = r;
var cell = row.Cells.Add();
cell.VerticalAlignment = v;
cell.DefaultCellTextState.HorizontalAlignment = h;
cell.Border = new BorderInfo(BorderSide.All, 1, Color.Black);
cell.Paragraphs.Add(tf);
}
}
page.Paragraphs.Add(table);
}
pdf.Save("C:/temp/AsposePDFRotation.pdf");
}
public static string COL(int columns)
{
var sb = new StringBuilder();
var s = ((PageSize.PageLetter.Width-50) / columns).ToString();
for (int i = 1; i <= columns; i++)
{
sb.Append(s);
sb.Append(" ");
}
return sb.ToString().TrimEnd();
}