Itext使用固定的 Y 线进行尖锐的水平对齐问题



我正在使用ItextSharp lib来编写pdf。我必须在 pdf 证书模板上打印学生的姓名。我无法将学生姓名与固定的 y 坐标居中对齐。

private byte[] CreatePDF2(UserCourseViewModel userCourse)
{
PdfReader reader = new PdfReader(new RandomAccessFileOrArray(Request.MapPath("/Templates/Certificate.pdf")), null);
Rectangle size = reader.GetPageSizeWithRotation(1);
Document doc = new Document(size);
using (MemoryStream output = new MemoryStream())
{
PdfWriter writer = PdfWriter.GetInstance(doc, output);
doc.Open();

PdfContentByte cb = writer.DirectContent;
cb.BeginText();
try
{
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page,0,0);
cb.SetFontAndSize(BaseFont.CreateFont(), 24);
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "Student Name", (size.Width) / 2, 350, 0);
}
finally
{
cb.EndText();
}

doc.Close();

return output.ToArray();
}

Y坐标似乎是正确的,x坐标肯定不在中心。我无法找到一种方法,无论学生姓名如何,它都将始终水平居中在证书上。 我对任何其他工具都持开放态度,因为我的要求非常简单,我只需要打开 pdf 模板并在课程证书上写下学生姓名。(ITextSharp对于这个任务来说似乎太复杂了(

这对我有用,用于对齐段落。

cb.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);

最新更新