iText 7 - 居中对齐文本和段落

Dav*_*y-F 1 c# itext itext7

我正在尝试将文本块居中对齐,但结果不一致。这是我的代码的粗略想法:

baseCanvas.ShowTextAligned("Header 1", 555, 839, TextAlignment.CENTER, 0);
baseCanvas.ShowTextAligned("Test test test ...", 240, 809, TextAlignment.CENTER, 0);
Run Code Online (Sandbox Code Playgroud)

这是PDF输出:

输出

但是我正在努力实现以下目标: 设计

我已经检查了 iText 文档,但是有没有办法在不必创建表格和单元格的情况下做到这一点?

Bru*_*gie 5

当你这样做时:

baseCanvas.ShowTextAligned("Some text", x, y, TextAlignment.CENTER, 0);
Run Code Online (Sandbox Code Playgroud)

然后您希望坐标(x, y)与文本的中间重合"some text"

在您的代码片段中,您将一些文本围绕坐标居中,(555, 839)而一些文本围绕着(40, 809)解释差异的坐标。

既然您使用的是 iText 7,为什么不利用现在可以轻松地将Paragraph对象定位在绝对位置这一事实呢?.NETiText 7 快速入门教程已经介绍了一些基本构建块,但构建块教程更深入。

看一下第 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();
Run Code Online (Sandbox Code Playgroud)

这应该在矩形内添加文本(36, 650, 100, 100)并将所有内容居中。