Yogi_Bear
Yogi_Bear

Reputation: 594

iText header: add logo img on the left side and text on the right side

I´m new to iText. I would like to make a header that will be the same on each page. The page header will look something like this:

logo.jpg                                                                       some text

How can I do that? I have read this link:

http://developers.itextpdf.com/question/how-generate-report-dynamic-header-pdf-using-itextsharp

and I have a problem because I cant add an image to pharse.

Image image = Image.GetInstance(Server.MapPath(mclLogo));
phrase.Add(image);

Throws the Error:

Insertion of illegal Element: 32

Edit: I have tried with paragraph and glue:

Paragraph paragraph = new Paragraph();
paragraph.Add(image);
paragraph.Add(new Chunk(glue));
paragraph.Add("text on the right");

and the output is 2 lines. somthing link this:

logo.jpg
                                                                                some text

edit 2: I have read this: http://developers.itextpdf.com/content/itext-7-jump-start-tutorial/chapter-1-introducing-basic-building-blocks espacially the part:

Image fox = new Image(ImageDataFactory.create(FOX));
Image dog = new Image(ImageDataFactory.create(DOG));
Paragraph p = new Paragraph("The quick brown ")
        .add(fox)
        .add(" jumps over the lazy ")
        .add(dog);
document.add(p);

but I use iText5 and I dont find any way how to make a picture and text in the same line.

Upvotes: 1

Views: 3692

Answers (1)

JP Vishnu
JP Vishnu

Reputation: 11

Try below code, which works with two different Header plot which plotted at right end with image and Left end one with text.

public override void OnStartPage(PdfWriter writer, iTextSharp.text.Document document)
{
        PdfPTable HeaderPlot = new PdfPTable(new float[] { 10F });//Header plot 1
        PdfPTable HeaderPlot2 = new PdfPTable(new float[] { 10F });//Header plot 2
        PdfPCell cell;//cell 1
        PdfPCell cell2;// cell 2
        HeaderPlot.TotalWidth = 570F; //width for Header plot 1
        HeaderPlot2.TotalWidth = 570F;//width for Header plot 2
        cell = new PdfPCell();
        cell2 = new PdfPCell();
        string path = headerpath;
        FileInfo f2 = new FileInfo(path);
        FileStream fs = new FileStream(f2.FullName,
        FileMode.Open, FileAccess.Read);
        BinaryReader rdr = new BinaryReader(fs);
        byte[] fileData = rdr.ReadBytes((int)fs.Length);
        Image image = Image.GetInstance(fileData);
        image.ScaleAbsolute(80, 40); //adjusting image size
        image.Alignment = Element.ALIGN_CENTER;
        cell = new PdfPCell(image)
        {
            Border = 0,
            HorizontalAlignment = Element.ALIGN_TOP,
            VerticalAlignment = Element.ALIGN_TOP
        };//Header image position
        Font font = FontFactory.GetFont("Calibri Light", 8f, Font.NORMAL, 
        iTextSharp.text.BaseColor.BLACK);//Initializing font
        cell2 = new PdfPCell(new Phrase("Text", font))
        {
            Border = 0,
            HorizontalAlignment = Element.ALIGN_LEFT,
            VerticalAlignment = Element.ALIGN_TOP
        };//Header Text position
        HeaderPlot.AddCell(cell);//adding cell 1 to Headerplot 1
        HeaderPlot.WriteSelectedRows(0, -1, 480, 835, 
        writer.DirectContent);//Position of the header on right end, coordinates on right end(480,835)
        HeaderPlot2.AddCell(cell2);//adding cell 2 to Headerplot 2
        HeaderPlot2.WriteSelectedRows(0, -1, 40, 835, 
        writer.DirectContent);//Position of the header on left end, coordinates on left end(40,835)
    }



        

Upvotes: 0

Related Questions