none
Ayuda por favor liberar Pdf c# itextsharp RRS feed

  • Pregunta

  • Al momento de crear mi Pdf me lo abre y no me da ningún error, pero si lo quiero volver abrir teniendo anteriormente abierto el primero me da este error

        'El proceso no puede obtener acceso al archivo 'C:\Sistema_De_Cotizaciones_Vista_Previa\Vista_Previa.pdf' porque está siendo utilizado en otro proceso.'

        Lo que busco es poder abrir el mismo archivo aunque este este abierto, Quiero liberar el archivo cuando se termina de crear para que al momento de volverlo a crear este disponible. 


        introducir el código aquí  
       

    string filename = @"C:\Sistema_De_Cotizaciones_Vista_Previa\Vista_Previa.pdf";
    
    Document Documento_Pdf_Marsys = new Document(iTextSharp.text.PageSize.LETTER, 36, 36, 36, 85);
    
    
    using (PdfWriter pdfWrite = PdfWriter.GetInstance(Documento_Pdf_Marsys,new FileStream(filename, System.IO.FileMode.Create)))
    {
    
        iTextSharp.text.Rectangle Page = Documento_Pdf_Marsys.PageSize;
    
    
        Documento_Pdf_Marsys.Open();
    
        //cuerpo del pdf//
        //cuerpo del pdf//
        //cuerpo del pdf//
        //cuerpo del pdf//
    
        Documento_Pdf_Marsys.Dispose();
        Documento_Pdf_Marsys.Close(); 
        Documento_Pdf_Marsys.CloseDocument();
        pdfWrite.Close();
        System.Diagnostics.Process.Start(filename);
    
    }

                                                                                                     

    Juega Contra El Mejor Muere Como Los Demas


    martes, 16 de febrero de 2021 8:37

Respuestas

  • Buenas noches realice los cambios correspondientes mencionados en tu respuesta, se crea el pdf por primera vez y no manda error pero al crearlo nuevamente teniendo abierto el primero si manda error

    System.IO.IOException: 'El proceso no puede obtener acceso al archivo 'C:\Sistema_De_Cotizaciones_Vista_Previa\Vista_Previa.pdf' porque está siendo utilizado en otro proceso.'

    no pongo el cuerpo del PDF por que es muy largo pero si nececitan que lo ponga lo hare, Gracias de antemano.


    Juega Contra El Mejor Muere Como Los Demas

    Hola, pero eso es así. Generas un PDF y lo abres. No puedes luego crear otro con el mismo nombre y abrirlo ya que según indicas ya lo tienes abierto. Te recomiendo por ejemplo que generes un nombre de archivo que tenga un sufijo aleatorio me explico
    string fileName = @"<Tu Ruta que has escrito>"+DateTime.Now.Ticks.ToString()+".pdf";
    Cuando se abre un fichero, éste se bloquea para escritura, que es lo que estás haciendo(escribir uno nuevo)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    miércoles, 17 de febrero de 2021 6:37
    Moderador

Todas las respuestas

  • Hola, lo primero indicarte que puedes anidar bloques using. También el inicio del proceso lo saques fuera de esos bloques, por lo que quedaría así

    string filename = @"C:\Sistema_De_Cotizaciones_Vista_Previa\Vista_Previa.pdf";
    
    using(Document Documento_Pdf_Marsys = new Document(iTextSharp.text.PageSize.LETTER, 36, 36, 36, 85))
    {
        using (PdfWriter pdfWrite = PdfWriter.GetInstance(Documento_Pdf_Marsys,new FileStream(filename, System.IO.FileMode.Create)))
        {
    
            iTextSharp.text.Rectangle Page = Documento_Pdf_Marsys.PageSize;
    
    
            Documento_Pdf_Marsys.Open();
    
            //cuerpo del pdf//
            //cuerpo del pdf//
            //cuerpo del pdf//
            //cuerpo del pdf//
    
            Documento_Pdf_Marsys.Dispose();
            Documento_Pdf_Marsys.Close(); 
            Documento_Pdf_Marsys.CloseDocument();
            pdfWrite.Close();
        }
    }
    
    System.Diagnostics.Process.Start(filename);
    


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 16 de febrero de 2021 11:18
    Moderador
  • Hola,

    ¿Alguna novedad sobre la consulta realizada?

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 16 de febrero de 2021 15:15
    Moderador
  • Antes que nada muchas gracias por responder apenas estoy llegando a mi casa apenas implementare lo que me comentan y les hago llegar las notificaciones al respecto.

    Juega Contra El Mejor Muere Como Los Demas

    martes, 16 de febrero de 2021 23:00
  • Antes que nada muchas gracias por responder apenas estoy llegando a mi casa apenas implementare lo que me comentan y les hago llegar las notificaciones al respecto.

    Juega Contra El Mejor Muere Como Los Demas

    martes, 16 de febrero de 2021 23:00
  • Buenas noches realice los cambios correspondientes mencionados en tu respuesta, se crea el pdf por primera vez y no manda error pero al crearlo nuevamente teniendo abierto el primero si manda error

    System.IO.IOException: 'El proceso no puede obtener acceso al archivo 'C:\Sistema_De_Cotizaciones_Vista_Previa\Vista_Previa.pdf' porque está siendo utilizado en otro proceso.'

    no pongo el cuerpo del PDF por que es muy largo pero si nececitan que lo ponga lo hare, Gracias de antemano.


    Juega Contra El Mejor Muere Como Los Demas

    miércoles, 17 de febrero de 2021 1:21
  • Realice lo comentado en la respuesta pero sigue el error, de todas formas no me de tengo y estoy investigando y tratando de llegar a la solución en dado caso que llege a dicha solución la compartiré para futuros programadores que tenga problemas.

    Juega Contra El Mejor Muere Como Los Demas

    miércoles, 17 de febrero de 2021 1:23
  • Buenas noches realice los cambios correspondientes mencionados en tu respuesta, se crea el pdf por primera vez y no manda error pero al crearlo nuevamente teniendo abierto el primero si manda error

    System.IO.IOException: 'El proceso no puede obtener acceso al archivo 'C:\Sistema_De_Cotizaciones_Vista_Previa\Vista_Previa.pdf' porque está siendo utilizado en otro proceso.'

    no pongo el cuerpo del PDF por que es muy largo pero si nececitan que lo ponga lo hare, Gracias de antemano.


    Juega Contra El Mejor Muere Como Los Demas

    Hola, pero eso es así. Generas un PDF y lo abres. No puedes luego crear otro con el mismo nombre y abrirlo ya que según indicas ya lo tienes abierto. Te recomiendo por ejemplo que generes un nombre de archivo que tenga un sufijo aleatorio me explico
    string fileName = @"<Tu Ruta que has escrito>"+DateTime.Now.Ticks.ToString()+".pdf";
    Cuando se abre un fichero, éste se bloquea para escritura, que es lo que estás haciendo(escribir uno nuevo)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    miércoles, 17 de febrero de 2021 6:37
    Moderador
  • Hola, incluso puedes hacer es buscar en la lista de Procesos en ejecución, si tienes ese fichero abierto y cerrarlo. 

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 17 de febrero de 2021 6:40
    Moderador
  • Hola que tal te comento no he podido solucionar el error, tendras otra idea?

    Juega Contra El Mejor Muere Como Los Demas

    jueves, 18 de febrero de 2021 21:04