Principales respuestas
Imagenes sobre lineas y texto con itextsharp para generar PDF

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.
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
Todas las respuestas
-
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...
-
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.
- Editado Javier Roque viernes, 24 de marzo de 2017 15:25
-
-
-
-
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 ahoradocument.add(Sello_Report) <==usaba antes
-
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.
- Editado Javier Roque sábado, 25 de marzo de 2017 13:49
-
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