none
Como puedo copiar una imagen que esta dentro de un control asp:Image RRS feed

  • Pregunta

  • Hola buenas tardes. Estoy trabajando con C# y asp.net y cree una pagina para generar código de barras ya lo logre hacer y ahora lo que quiero es como copiar o guardar esa imagen para después usarla en un archivo pdf (estoy usando itextsharp). 

    Mi código para generar el código de barras  es el siguiente:

     System.IO.MemoryStream stream = new System.IO.MemoryStream();
     BarcodeLib.Barcode Codigobar = new BarcodeLib.Barcode();
     Codigobar.IncludeLabel = true;
     System.Drawing.Image img = Codigobar.Encode(BarcodeLib.TYPE.CODE128, txtMatriculas.Text, System.Drawing.Color.Black, System.Drawing.Color.White, 150, 50);
     img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);         
    
     Image1.ImageUrl=("data:image/png;base64," + Convert.ToBase64String(stream.ToArray(), 0, stream.ToArray().Length));

    y mi codigo de para modificar el archivo pdf es el siguiente:

      string pathPDF = @"c://anterior.pdf";
    
                /* Se crea nuevo gafete */
                string pathPDF2 = @"c://nuevo.pdf";
    
                //Objeto para leer el pdf original
                PdfReader oReader = new PdfReader(pathPDF);
    
                //Objeto que tiene el tamaño de nuestro documento
    
    
                Rectangle oSize = oReader.GetPageSizeWithRotation(1);
    
                ////documento de itextsharp para realizar el trabajo asignandole el tamaño del original
                Document oDocument = new Document(oSize);
    
                // Creamos el objeto en el cual haremos la inserción
                FileStream oFS = new FileStream(pathPDF2, FileMode.Create, FileAccess.Write);
                PdfWriter oWriter = PdfWriter.GetInstance(oDocument, oFS);
                oDocument.Open();
    
                //El contenido del pdf, aqui se hace la escritura del contenido
                PdfContentByte oPDF = oWriter.DirectContent;
    
                //Propiedades de nuestra fuente a insertar
                BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                oPDF.SetColorFill(BaseColor.GRAY);
    
                //Tamaño de la letra
                oPDF.SetFontAndSize(bf, 38);
    
                //Se abre el flujo para escribir el texto
                oPDF.BeginText();
    
                //asignamos el texto          
                string Nombre = lblNombre.Text;
    
                // Le damos posición y rotación al texto
    
                // Este es para la matricula
    
                oPDF.ShowTextAligned(10, text, 380, oSize.Height - 790, 0);
    
                // Este es para el nombre
    
                oPDF.SetColorFill(BaseColor.GRAY);
                oPDF.SetFontAndSize(bf, 23);
                oPDF.ShowTextAligned(3, Nombre, 320, 190, 0);
    
                /*************************** ES LA IMEGEN ******************************************/
                oPDF.EndText();
    
                //crea una nueva pagina y agrega el pdf original
                PdfImportedPage page = oWriter.GetImportedPage(oReader, 1);
                oPDF.AddTemplate(page, 0, 0);
    
                // Cerramos los objetos utilizados
                oDocument.Close();
                oFS.Close();
                oWriter.Close();
                oReader.Close();
            }

    Muchas gracias por su ayuda

    martes, 9 de octubre de 2018 22:43

Respuestas

  • hola

    pero no necesitas copiar nada, cuando generas la imagen la consevas en Session y luego la usas desde alli para el pdf

    img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);

    var imageBase64 = Convert.ToBase64String(stream.ToArray();

    Session["ImageBase64"] = imageBase64; Image1.ImageUrl=("data:image/png;base64," + imageBase64, 0, stream.ToArray().Length));

    entonces cuando generas el pdf si necesitas en byte array de la imagen aplicas el Convert.FromBase64String() y lo usas en la libreria pdf

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 11 de octubre de 2018 1:18

Todas las respuestas

  • hola

    pero no necesitas copiar nada, cuando generas la imagen la consevas en Session y luego la usas desde alli para el pdf

    img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);

    var imageBase64 = Convert.ToBase64String(stream.ToArray();

    Session["ImageBase64"] = imageBase64; Image1.ImageUrl=("data:image/png;base64," + imageBase64, 0, stream.ToArray().Length));

    entonces cuando generas el pdf si necesitas en byte array de la imagen aplicas el Convert.FromBase64String() y lo usas en la libreria pdf

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 11 de octubre de 2018 1:18
  • muchas gracias Leandro
    lunes, 15 de octubre de 2018 2:41