具有固定Y坐标的ItextSharp水平对齐问题

时间:2018-07-03 10:52:43

标签: c# asp.net-mvc itext pdf-generation

我正在使用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似乎太复杂了)

1 个答案:

答案 0 :(得分:0)

这对我来说很适合对齐段落。

    cb.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);
相关问题