2016-05-25 30 views
-1

テキストをページの中央に配置することができません。私は間違って何をしていますか?あなたはALIGN_CENTERShowTextAlignedを使用する場合iTextSharpは、テキストを中心に説明すると、すべての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

まず.....私が持つページを取得するにはいくつかの方法を試してみましたが、どれもページの中央にテキストを作るように見えるんあなたのために、テキストの幅を扱う必要はありません。中心点にテキストを配置するように指示するだけです。

したがって、あなたがこのようにページ上のテキストを中央揃えすることができます

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