Как помещение текста и такого изображения как заголовок в документ PDF Itextsharp

Привет всем я работаю с Itextsharp и в документе pdf, что уже realize я хочу добавить его, как возглавленный титул и рядом изображение предприятия, но он не получается, как я хочу это, он что hize, но оно не функционирует:

Paragraph title = new Paragraph(string.Format("RAYO DE LUZ"), new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 20, iTextSharp.text.Font.BOLD));
           title.Alignment = Element.ALIGN_CENTER;
           doc.Add(title);

           byte[] bytesImagen = new System.Drawing.ImageConverter().ConvertTo(Resources.nplk, typeof(byte[])) as byte[];
           iTextSharp.text.Image imagen = iTextSharp.text.Image.GetInstance(bytesImagen);
           imagen.Alignment = Element.ALIGN_RIGHT;
           imagen.ScaleAbsolute(120f, 120f);
           doc.Add(imagen);

Я надеюсь, что они могут помогать мне, спасибо заранее.

4
задан 05.01.2017, 21:37
3 ответа

Ты должен играть с положениями изображения, на основании картезианской плоскости:

Инициализируясь под posici¦n x=0, y=0 (нижний левый угол pÃ: gina)

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

присоединил Тебе l¦-neas c¦digo примера:

//OBTENGO LA IMAGEN desde archivo
    public static iTextSharp.text.Image img = Image.GetInstance("Logo.png");
    private void CrearPDFConImagen()
    {
        try
        {
            Document Doc = new Document(PageSize.LETTER, 10f, 10f, 10f, 0f);//Horizontal
            //Document Doc = new Document(PageSize.LETTER, 10f, 10f, 10f, 0f);
            PdfWriter.GetInstance(Doc
                , new System.IO.FileStream(
                    System.IO.Directory.GetCurrentDirectory()
                    + "\\EjemploImagen" + Guid.NewGuid() + ".pdf",
                    System.IO.FileMode.Create));

            Doc.Open();                

            // Le colocamos el título y el autor
            // **Nota: Esto no será visible en el documento
            Doc.AddTitle("Reporte de ejemplo Con imagen");
            Doc.AddCreator("Cristina Carrasco - cristina.carrasco.angulo@gmail.com");

            //var logo = iTextSharp.text.Image.GetInstance("Logo.png");
            var parrafo2 = new Paragraph("             Titulo del PDF");
            parrafo2.SpacingBefore = 200;
            parrafo2.SpacingAfter = 0;
            parrafo2.Alignment = 1; //0-Left, 1 middle,2 Right
            Doc.Add(parrafo2);
            Doc.Add(Chunk.NEWLINE);

            img.ScaleToFit(125f, 60F);

            //Imagen - Esquina inferior izquierda
            img.SetAbsolutePosition(0, 0);
            Doc.Add(img);

            //Imagen  - Movio en el eje de las X
            img.SetAbsolutePosition(200, 0);
            Doc.Add(img);

            //Imagen - Movio en el eje de las Y
            img.SetAbsolutePosition(0, 200);
            Doc.Add(img);

            //Imagen - Movio en el eje de las Y
            img.SetAbsolutePosition(0, 750);
            Doc.Add(img);

            //Imagen - Movio en el eje de las Y
            //Esta imagen es la que esta centrada a un lado del titulo
            img.SetAbsolutePosition(150, 750);
            Doc.Add(img);

            Doc.Close();
        }
        catch (Exception ex)
        {
            throw new Exception(ex.ToString(), ex);
        }
    }

В этом l¦-nea:

var parrafo2 = new Paragraph("             Titulo del PDF");

Добавил какое-то место в начало для того, чтобы изображение оказалось более или менее центрованным.

Надеялся, что он тебе полезен, привет.

Обновлений:

Присоединил c¦digo шрифт: Click, чтобы загружать

2016-Ene-10

объяснил Тебе больше в деталь.

introducir la descripción de la imagen aquí

versi¦n itextsharp, что использование - 5.5.10.0, tendr¦-эксперт, который должен санкционировать это.

Добавил ссылки в файле, как он появляется в зеленом квадрате.

И создав переменную img, что я делаю, состоит в том, чтобы создавать инстанцию iTextSharp.text.mage и я посылаю строителю имя файла Logo.png, каков должен быть добавленным к проекту, как он появляется в красном квадрате предыдущего изображения.

Другая важная вещь изображения состоит в том, что он должен существовать в папке aplicaci¦n для этого, я сделал следующее:

introducir la descripción de la imagen aquí

Выбрал opci¦n Copy to Output Directory = Copy always в поле ввода свойств (прямой клик в файле Logo.png и después клик в opci¦n propiedades menú contextual в secci¦n Explorador de soluciones из Visual Studio), ты можешь делать это или копировать файл прямо в папку, где он скроллирует aplicaci¦n.

Это изображение, что я имею атташе посольства по отношению к проекту:

introducir la descripción de la imagen aquí

, выполнив aplicaci¦n, копируется в папку .exe (в моем случае это aplicaci¦n Windows):

introducir la descripción de la imagen aquí

Возможно это деталь, которой тебе не хватает. Когда изображение не существует, система это искала и отметка ошибка ( не могут находить файл ):

introducir la descripción de la imagen aquí

8
ответ дан 24.11.2019, 11:45
  • 1
    Привет Кристина am поддержала меня в каждом из ответов каждого и уже меня добавляет изображение, но даже не остается, как я хочу – karol 07.01.2017, 20:20
  • 2
    то, что ты делаешь, состоит в том, что он не прибывает bn в край берега правой стороны – karol 07.01.2017, 20:48
  • 3
    Ты можешь налаживать tamañ или изображения, проверять, что у него не было краев, с algú n запрограммируй как paint.net, и despué s в có я говорю использовать funció n: img.ScaleToFit(125f, 60F);, чтобы налаживать tamañ или, с có я говорю об ответе, что ты можешь двигать это в картезианской плоскости до тех пор, пока он не останется, как ты это желаешь, главным образом проверь, что было налажено изображение, возможно у него есть много белый край и останься на всем. – Cristina Carrasco 08.01.2017, 05:39
  • 4
    уже проверьте и я сделал это таким которые ты это помещаешь, но он ничего не делает – karol 09.01.2017, 18:26
  • 5
    Эта кажется ответом конечного пользователя и не программиста... ¿ Qué значь он ничего не делает?, я буду иметь тебе проект и allí ты это проверяешь в programació n, смоги быть что твое изображение, которое не хорошо diseñ ada или обрезанная, или возможно ты вводишь другой объект сверху. Tendrí в который видеть твой có я говорю, чтобы помогать тебе. Пока я печатаю мой пример и ты это проверяешь. – Cristina Carrasco 09.01.2017, 20:01

Извини из-за возможных ошибок; я не работаю с C#, так что я не 100 % уверенных в синтаксисе; я надеюсь, что он ясный.

Таким образом, ты можешь включать заголовок и(или) ногу страницы в начале / конце каждой страницы:

Внутри твоего кода, он добавляет этот класс (в моем случае, я добавил таблицу, которая содержит изображение; ты можешь изменять таблицу, чтобы иметь две ячейки сторону по отношению к стороне, или как лучше я разметил тебя):

public class itsEvents : PdfPageEventHelper {

    /*Evento que ocurre al iniciar una nueva página en el documento. Se utiliza para insertar el encabezado.*/
    public override void OnStartPage(iTextSharp.text.pdf.PdfWriter writer, iTextSharp.text.Document document)
    {
        PdfPTable t;
        PdfPCell c;

        Image imgLogo;
        String rutaLogo = Server.MapPath("../logo.png");

        imgLogo = iTextSharp.text.Image.GetInstance(rutaLogo);

        t = new PdfPTable(1);
        t.WidthPercentage = 100;

        float[] w = new float[1];
        w[0] = 10;
        t.SetWidths(w);

        c = new PdfPCell(imgLogo);
        c.Border = 0;
        c.VerticalAlignment = Element.ALIGN_TOP;
        c.HorizontalAlignment = Element.ALIGN_LEFT;
        t.AddCell(c);

        document.Add(t);
    }

    /*Evento que ocurre antes de pasar a una nueva página en el documento. Se utiliza para insertar el pie de página.*/
    public override void OnEndPage(iTextSharp.text.pdf.PdfWriter writer, iTextSharp.text.Document document)
    {
    }

}

И в твоем главном классе, когда ты создаешь документ:

PdfWriter pdfWrite = PdfWriter.GetInstance(document, new FileStream(ruta, FileMode.OpenOrCreate));
itsEvents ev = new itsEvents();
pdfWrite.PageEvent = ev;

Если ты нуждаешься в том, чтобы поместить заголовок только на неких страницах, внутри событий OnStartPage и OnEndPage ты получаешь число страницы следующей формы:

int pageN = writer.PageNumber;

if (pageN == 1) {
    // Encabezado/pie de página sólo en la primera página
}
2
ответ дан 24.11.2019, 11:45
  • 1
    ok оставь я буду проверять это стой – karol 10.01.2017, 18:42
  • 2
    ey тысяча спасибо исходит из твоего синтаксиса я помогаю себя – karol 13.01.2017, 18:37

Пробуй со следующим:

   string archivoImagen= "logo.jpg";
   string imagenPath= Path.Combine(Environment.CurrentDirectory, @"img\", archivoImagen); 
// Esto es C:\MyProjects\Apps\TUApp\bin\Debug\img\logo.jpg




Image imagen = Image.GetInstance(imagenPath);  
Paragraph p = new Paragraph();
p.Add(new Chunk(imagen, 0, 0));
p.Add(new Phrase("Esto es un logo")); 
document.Add(p);
1
ответ дан 24.11.2019, 11:45
  • 1
    ok я попробую это, но что идет в (imagenPath)?? – karol 05.01.2017, 22:20
  • 2
    url твоего изображения. – x4mp73r 05.01.2017, 22:30
  • 3
    я это выполняю и меня помечает ошибка – karol 05.01.2017, 22:59

Теги

Похожие вопросы