2016-05-25 5 views
-1

Я не могу получить текст, который будет центрирован на странице. Что я делаю не так? Я попробовал несколько способов, чтобы получить страницу с, но никто не похож, чтобы сделать текст сосредоточенного на странице .....Текстовый текст iTextSharp на странице

  BaseFont bf = BaseFont.CreateFont("c:\\windows\\fonts\\calibri.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 
      PdfReader reader = new PdfReader("C:\\temp\\Certificate12.pdf"); 
      var pageSize = reader.GetPageSize(1); 

      iTextSharp.text.Rectangle rec2 = new iTextSharp.text.Rectangle(PageSize.LETTER); 

      PdfStamper stamper = new PdfStamper(reader, stream1); 

      PdfContentByte canvas = stamper.GetUnderContent(1); 

      canvas.BeginText(); 
      canvas.SetFontAndSize(bf, 24); 

      string nameText = "First Name Last Name"; 
      int textWidth = (int)nameText.Length; 

      int canvasWidth = (int)canvas.PdfDocument.PageSize.Width; 
      float xStart = (canvasWidth/2) - (textWidth/2); 

      canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nameText, xStart, pageSize.GetTop(Utilities.MillimetersToPoints(145)), 0); 

ответ

0

Прежде всего, если вы используете ShowTextAligned с ALIGN_CENTER, iTextSharp центрирует текст для вас, поэтому вам не нужно иметь дело с шириной текста вообще. Вам просто нужно сказать, чтобы он центрировал текст, на котором находится центр.

Таким образом, вы можете центрировать текст на странице, как это:

BaseFont bf = BaseFont.CreateFont("c:\\windows\\fonts\\calibri.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 

using (PdfReader reader = new PdfReader(source)) 
using (PdfStamper stamper = new PdfStamper(reader, new FileStream(dest, FileMode.Create, FileAccess.Write))) 
{ 
    Rectangle pageSize = reader.GetPageSize(1); 
    PdfContentByte canvas = stamper.GetUnderContent(1); 

    string nameText = "First Name Last Name"; 

    canvas.BeginText(); 
    canvas.SetFontAndSize(bf, 24); 
    canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nameText, (pageSize.Left + pageSize.Right)/2, pageSize.GetTop(Utilities.MillimetersToPoints(145)), 0); 
    canvas.EndText(); 
} 
+0

я сделал именно то, что вы сделали, но это все еще не в центре. Я не знаю, как разместить изображение здесь, чтобы показать вам. –

+0

Это странно. Вывод, который я получаю, центрирован. Я предполагаю, что вы используете текущую версию iTextSharp. Таким образом, единственным очевидным отличием является используемый вами PDF-файл. Пожалуйста, поделитесь им, чтобы воспроизвести вашу проблему. – mkl