ItextSharp горизонтальное выравнивание проблема с фиксированными Y кординаты - PullRequest
0 голосов
/ 03 июля 2018

Я использую 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 голосов
/ 03 июля 2018

Это работает для меня, для выравнивания абзаца.

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