2017-02-01 13 views
2

Я пытаюсь добавить изображение в центре (в середине) страницы PDF-файла с текстом, но я не могу сделать это правильно. Я использую для изображения SetAbsolutePosition, но текст не стоит под изображением.ItextSharp добавить изображение в центр страницы с текстом под ним

мне нужно в моем Pdf файл в следующем формате страницы: enter image description here

Я использую следующий код:

   PdfWriter writer = PdfWriter.GetInstance(doc, fs); 

       ITextEvents ev = new ITextEvents(); 
       writer.PageEvent = ev; 
       doc.Open(); 

       var paragraph = new Paragraph(); 
       var paragraph1 = new Paragraph(); 
       var chunk = new Chunk("Text under picture", f14nb); 
       var chunk1 = new Chunk("Code of picture", f14); 

       img = ScaleImg(Image.GetInstance(imgNane_2)); 
       img.SetAbsolutePosition((PageSize.A4.Width - img.ScaledWidth)/2, 
        ((PageSize.A4.Height - img.ScaledHeight)/2)); 

       paragraph.Add(img); 
       paragraph1.Add(chunk); 
       paragraph1.Add(chunk1); 
       doc.Add(paragraph); 
       doc.Add(paragraph1); 

       doc.Close(); 

private Image ScaleImg(Image img) 
{ 
    if (img.Height > img.Width) 
    { 
     //Maximum height is 800 pixels. 
     float percentage = 0.0f; 
     percentage = 640/img.Height; 
     img.ScalePercent(percentage * 100); 
    } 
    else 
    { 
     //Maximum width is 600 pixels. 
     float percentage = 0.0f; 
     percentage = 500/img.Width; 
     img.ScalePercent(percentage * 100); 
    } 
    return img; 
} 

Я думаю, что я должен использовать другой способ для решения моя проблема, но я не знаю, что.

спасибо.

ответ

0

Я понял, как это сделать.

Это для изображения с текстом:

 public Image getWatermarkedImage(Document Doc, Image img, String watermarkText) 
    { 
     float width = img.ScaledWidth; 
     float height = img.ScaledHeight; 

     PdfTemplate template = cb.CreateTemplate(width, height); 

     template.AddImage(img, width, 0, 0, height, 0, 0); 
     ColumnText.ShowTextAligned(template, Element.ALIGN_RIGHT, 
      new Phrase(watermarkText, fontBold_14), width - 10, 10, 0); 

     return Image.GetInstance(template); 
    } 

Это для добавления текста под изображением (основной код):

   var codeOfPicture = "*Code of picture* - *Код картинки*"; 

       var chunk = new Chunk("Text under picture", font_14); 

       img = ScaleImg(Image.GetInstance(imgNane_1));//imgNane_2)); 

       var tmpImg = getWatermarkedImage(doc, img, codeOfPicture); 
       var textY = ((PageSize.A4.Height - img.ScaledHeight)/2) - 15; 
       var textX = PageSize.A4.Width/2; 

       tmpImg.SetAbsolutePosition((PageSize.A4.Width - img.ScaledWidth)/2, 
        ((PageSize.A4.Height - img.ScaledHeight)/2)); 

       doc.Add(tmpImg); 

       ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, new Phrase(chunk), textX, textY, 0); 

 Смежные вопросы

  • Нет связанных вопросов^_^