Когда вы делаете:
baseCanvas.ShowTextAligned("Some text", x, y, TextAlignment.CENTER, 0);
Тогда вы хотите, чтобы координата (x, y)
совпадала с серединой текста "some text"
.
В вашем фрагменте кода вы центрировалисьтекст вокруг координаты (555, 839)
и текст вокруг координаты (40, 809)
, объясняющий разницу.
Поскольку вы используете iText 7, почему бы вам не воспользоваться тем, что теперь вы можете легкопозиция Paragraph
объекты в абсолютных позициях?Учебное пособие по началу работы с iText 7 для .NET уже знакомит с некоторыми базовыми строительными блоками, но учебное пособие по строительным блокам углубляется в подробности.
Посмотритев первом примере глава 2 и измените его следующим образом:
PdfPage page = pdf.AddNewPage();
PdfCanvas pdfCanvas = new PdfCanvas(page);
Rectangle rectangle = new Rectangle(36, 650, 100, 100);
Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle);
PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont bold = PdfFontFactory.createFont(FontConstants.TIMES_BOLD);
Text title =
new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").SetFont(bold);
Text author = new Text("Robert Louis Stevenson").SetFont(font);
Paragraph p = new Paragraph().Add(title).Add(" by ").Add(author);
p.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);
canvas.Add(p);
canvas.Close();
Это должно добавить текст внутри прямоугольника (36, 650, 100, 100)
и центрировать все содержимое.