none
Imagenes sobre lineas y texto con itextsharp para generar PDF RRS feed

  • Pregunta

  • Hola a todo y de antemano gracias por su colaboraciones

    Bueno Amigos, como dice el titulo lo quiero es insertar unas imágenes en un PDF y para ser mas exacto es de un sello y una firma digitalizadas en un recibo de pago pero quiero quede por encima de las lineas y texto escrito en dicho recibo ya que las imágenes quedan por debajo ya sea de las lineas o del texto Gracias...

    • Cambiado Enrique M. Montejo miércoles, 29 de marzo de 2017 6:30 Interoperabilidad con archivos pdf.
    jueves, 23 de marzo de 2017 20:39

Respuestas

  • listo amigo quedo excelente era de verdad una boberia pero bueno novato es novato a ver si me entienden lo que hice fue cambiar la adicion de la imagen de "document.add" que es con mayormente lo vemos en los diferentes foros y ayudas que consigues a la adicion de "cb.addimage"
    y asi la imagen se sobrepone a las lineas o cuadros, y otra cosa fue cerrar el texto osea "cb.EndText()" antes de las imagenes que eso me hizo que la imagen se sobreponga a el texto


    Dim document As New Document(PageSize.LETTER)
    Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream(ruta, FileMode.Create))
    writer.ViewerPreferences = PdfWriter.PageLayoutSinglePage
    document.Open()

    Dim cb As PdfContentByte = writer.DirectContent
    cb.BeginText()

    llenado del documentos
    cb.EndText()

    Dim Sello_Report As Image
    Sello_Report = Image.GetInstance(My.Application.Info.DirectoryPath & "\Sello.png")             
    Sello_Report.ScalePercent(35)
    Sello_Report.SetAbsolutePosition(270, 85)                            
    document.Add(Sello_Report)<=====Usaba Antes
    cb.AddImage(Sello_Report) <=====Uso Ahora

    document.Close()
    • Editado Kenlight33 domingo, 26 de marzo de 2017 2:33 error de palabra
    • Marcado como respuesta Kenlight33 domingo, 26 de marzo de 2017 2:34
    domingo, 26 de marzo de 2017 0:10

Todas las respuestas

  • Buenas noches ya leist las que se relacionan a tu pregunta. Lee

    Esta en asp pero puedes usar un convertidor y adaptarlo a lo que deseas.

    viernes, 24 de marzo de 2017 1:41
  • No amigo para nada sirvio osea cuando dije encima no se si me hice entender no es que sea ve ala imagen y debajo en cuanto a posicion en la hoja es osea que la imagen tape o este en la misma posicion de un texto pero la imagen este sobrepuesta de esas lineas o texto ya que cuando se hace queda las lineas como que rayaran la imagen si me entiende...
    viernes, 24 de marzo de 2017 7:43
  • Lo segun veo es que tu necesitas hacer un efecto marca de agua a la imagen en este caso el sello la opacidad de como se va mostrar ya tu lo vas probando.

    Es algo asi poner la imagen como fondo y luego posicionarla donde queremos:

    Como fondo o marca de agua:

    private void WriteWaterMark(Document objPdfDocument, string strFileImage) 
    { Image objImagePdf;
     
    	// Crea la imagen
    	objImagePdf = Image.GetInstance(strFileImage);
    	// Cambia el tamaño de la imagen
    	objImagePdf.ScaleToFit(3000, 770);
    	// Se indica que la imagen debe almacenarse como fondo
    	objImagePdf.Alignment = iTextSharp.text.Image.UNDERLYING;
    	// Coloca la imagen en una posición absoluta
    	objImagePdf.SetAbsolutePosition(7, 69);
    	// Imprime la imagen como fondo de página
    	objPdfDocument.Add(objImagePdf);
    }

    Escalamos la imagen y cambiarlo para establecer el fondo utilizando Image.UNDERLYING . Una vez hecho esto, simplemente debemos añadirlo a la página en la posición que deseemos.

    lo que debemos hacer es crear un rectángulo del color deseado que ocupe toda la página y añadir este rectángulo al PDF

    private void WriteWaterMark(Document objPdfDocument, System.Drawing.Color clrColor) 
    { Rectangle objRectangle = new Rectangle(objPdfDocument.PageSize);
    	
    	// Asigna el color de fondo
    	objRectangle.BackgroundColor = new BaseColor(clrColor);
    	// Añade el rectángulo a la página
    	objPdfDocument.Add(objRectangle);
    }

    Utiliza un convertidor para adaptarlo a tu codigo. Espero sea de ayuda. Puedes combinarlo primero el rectangulo y luego lo asignas o como esta.

    Cualquier cosa lo comentas ire haciendo otro en codigo vb.

    viernes, 24 de marzo de 2017 14:51
  • No me funciona amigo a mi sale asi
    viernes, 24 de marzo de 2017 18:59
  • y Quiero que se vea asi...osea sobre las lineas
    viernes, 24 de marzo de 2017 19:00
  • Entonces no imprimas la imagen como fondo. 

    viernes, 24 de marzo de 2017 20:45
  • Como asi amigo no comprendo es que apenas tengo 3 semanas usando esta libreria y de verdad que estoy bastante novato en esto podia mostrarme como y gracias por la ayuda...

    vea hice esto y no se si es lo que me quizo decir aunque logre que quedara como aparece en la imagen pero si coloco texto queda por debajo del texto...

    Dim document As New Document(PageSize.LETTER)

    Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream(ruta, FileMode.Create))
    writer.ViewerPreferences = PdfWriter.PageLayoutSinglePage
    document.Open()

    Dim cb As PdfContentByte = writer.DirectContent
    cb.BeginText()

    Dim Sello_Report As Image
    Sello_Report = Image.GetInstance(My.Application.Info.DirectoryPath & "\Sello.png")                
    Sello_Report.ScalePercent(35)
    Sello_Report.SetAbsolutePosition(270, 85)
    cb.AddImage(Sello_Report) <==uso ahora

    document.add(Sello_Report) <==usaba antes

    sábado, 25 de marzo de 2017 3:19
  • Bueno el codigo k te di  por lo visto no los has probado bueno si te queda por debajo del texto (under) entonces el problema esta en como lo posicionas.

    Del codigo que te coloque arriba que es en c# cambiandolo a vb net seria:

    Private Sub WriteWaterMark(ByVal objPdfDocument As Document, ByVal strFileImage As String)
            Dim objImagePdf As Image
            ' Crea la imagen
            objImagePdf = Image.GetInstance(strFileImage)
            ' Cambia el tamaño de la imagen
            objImagePdf.ScaleToFit(3000, 770)
            ' Se indica que la imagen debe almacenarse como fondo
            objImagePdf.Alignment = iTextSharp.text.Image.UNDERLYING
            ' Coloca la imagen en una posicion absoluta
            objImagePdf.SetAbsolutePosition(7, 69)
            ' Imprime la imagen como fondo de pagina
            objPdfDocument.Add(objImagePdf)
        End Sub
    	
    	Private Sub WriteWaterMark(ByVal objPdfDocument As Document, ByVal clrColor As System.Drawing.Color)
            Dim objRectangle As Rectangle = New Rectangle(objPdfDocument.PageSize)
            ' Asigna el color de fondo
            objRectangle.BackgroundColor = New BaseColor(clrColor)
            ' Añade el rectangulo a la pagina
            objPdfDocument.Add(objRectangle)
        End Sub
    Este tambien va quedar bajo como fondo pero tu quieres encima bueno como dije esta en como lo desees posicionar; voy a ver tu código a probarlo.



    sábado, 25 de marzo de 2017 13:25
  • listo amigo quedo excelente era de verdad una boberia pero bueno novato es novato a ver si me entienden lo que hice fue cambiar la adicion de la imagen de "document.add" que es con mayormente lo vemos en los diferentes foros y ayudas que consigues a la adicion de "cb.addimage"
    y asi la imagen se sobrepone a las lineas o cuadros, y otra cosa fue cerrar el texto osea "cb.EndText()" antes de las imagenes que eso me hizo que la imagen se sobreponga a el texto


    Dim document As New Document(PageSize.LETTER)
    Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream(ruta, FileMode.Create))
    writer.ViewerPreferences = PdfWriter.PageLayoutSinglePage
    document.Open()

    Dim cb As PdfContentByte = writer.DirectContent
    cb.BeginText()

    llenado del documentos
    cb.EndText()

    Dim Sello_Report As Image
    Sello_Report = Image.GetInstance(My.Application.Info.DirectoryPath & "\Sello.png")             
    Sello_Report.ScalePercent(35)
    Sello_Report.SetAbsolutePosition(270, 85)                            
    document.Add(Sello_Report)<=====Usaba Antes
    cb.AddImage(Sello_Report) <=====Uso Ahora

    document.Close()
    • Editado Kenlight33 domingo, 26 de marzo de 2017 2:33 error de palabra
    • Marcado como respuesta Kenlight33 domingo, 26 de marzo de 2017 2:34
    domingo, 26 de marzo de 2017 0:10