none
Crear PDF's RRS feed

  • Pregunta

  • Buenas, estoy trabajando en un sistema desarrollado en VB6, y tengo una rutina que genera PDF's para luego enviarlos por email. Para esto estoy utilizando el PDF Creator.

    Lo primero que hace el sistema es generar los PDF en C:\, una vez que estan creados el sistema comienza a enviar los correos, el problema que tengo es que solo se me esta generando un archivo PDF en la carpeta. Por ejemplo:

    Me genera el archivo 123456.pdf      9kb, luego, cuando genera el otro archivo de la lista parece que le cae encima al que ya existe, lo unico que hacer es cambiar el tamano del archivo en caso que este sea menor o mayor al que ya estaba.

    seria algo asi:    123456.pdf     9kb

                               123456.pdf    11kb

                               123456.pdf    8kb

    Este ejemplo muestre 3 archivos, pero es solo para ejemplifacar el caso, en la carpeta lo que queda guardado es solo un registro, el cual solo va modificando su tamano.

    *******************Esta funcion es la que tengo para crear el PDF*****************************************

    With pObjPDFCreator
           .cStart "/NoProcessingAtStartup"     'Inicia el PDFCreator

            .cOption("UseAutosave") = 1    'Nuevo indica que se va auto guardar
            .cOption("AutosaveFormat") = 0    ' 0 = PDF 2= jpg

            .cOption("UseAutosaveDirectory") = 1    'Nuevo indica que se va auto guardar en una carpeta predeterminada
            .cOption("AutosaveDirectory") = RTrim(LTrim(pStrImagePath))    'carpeta a generar
            .cOption("AutosaveFilename") = pStrNomRepor  'Guarda el nombre

            strDefaultPrinter = .cDefaultPrinter    'Selecciona la impresora por defecto Y la guarda
            .cDefaultPrinter = "PDFCreator"    'Pone la impresora PDFCreator por defecto para la imprecion
            pCystal.Destination = 1    'Destino de la impresora 0 lo muestra y 1 no lo muestra
            pCystal.Action = 1    'Manda a imprimir el archivo directamente
            .cPrinterStop = False    'Si esta en falso imprime sin parar la impresion

            .cSaveOptions    'Guarda el nuevo registro
            .cClearCache    'Limpia la memoria

            .cDefaultPrinter = strDefaultPrinter    'Coloca la impresora que estaba predeterminada
        End With

    ****************************************************************************************************

    Luego, en el evento eReady tengo lo siguiente

       If PDFCreator1.cPrinterStop <> True Then
            PDFCreator1.cPrinterStop = True
        End If
       
        rstCantEnviar.MoveNext   'mueve el recorset al siguiente registro
        Call convertirPdf

    Aqui lo que hago es mover el recordset para poder generar el PDF para el otro cliente y volver a llamar la funcion que lo crea para ir generando un PDF para cada cliente.

    Espero haberme dado a entender con el caso.

    Gracias por cualquier ayuda que me puedan dar.

    martes, 21 de febrero de 2012 22:21

Todas las respuestas

  • y se le agregas un sufijo de esta manera para que sea diferente fijate bien, Es una idea podrias crear un RandomNumero tambien

    *******************Esta funcion es la que tengo para crear el PDF*****************************************

    Static I as integer

    I=0

    With pObjPDFCreator

            i=i+1

           .cStart "/NoProcessingAtStartup"     'Inicia el PDFCreator

            .cOption("UseAutosave") = 1    'Nuevo indica que se va auto guardar
            .cOption("AutosaveFormat") = 0    ' 0 = PDF 2= jpg

            .cOption("UseAutosaveDirectory") = 1    'Nuevo indica que se va auto guardar en una carpeta predeterminada
            .cOption("AutosaveDirectory") = RTrim(LTrim(pStrImagePath))    'carpeta a generar
            .cOption("AutosaveFilename") = pStrNomRepor & "_" & cstr(I)  'Guarda el nombre

            strDefaultPrinter = .cDefaultPrinter    'Selecciona la impresora por defecto Y la guarda
            .cDefaultPrinter = "PDFCreator"    'Pone la impresora PDFCreator por defecto para la imprecion
            pCystal.Destination = 1    'Destino de la impresora 0 lo muestra y 1 no lo muestra
            pCystal.Action = 1    'Manda a imprimir el archivo directamente
            .cPrinterStop = False    'Si esta en falso imprime sin parar la impresion

            .cSaveOptions    'Guarda el nuevo registro
            .cClearCache    'Limpia la memoria

            .cDefaultPrinter = strDefaultPrinter    'Coloca la impresora que estaba predeterminada

        End With

    ****************************************************************************************************

    Luego, en el evento eReady tengo lo siguiente

       If PDFCreator1.cPrinterStop <> True Then
            PDFCreator1.cPrinterStop = True
        End If
        
        rstCantEnviar.MoveNext   'mueve el recorset al siguiente registro
        Call convertirPdf



    Capacitaciones Corporativas
    Si pequeña es la Patria, uno grande la sueña
    Rubén Darío
    Principe de las letras Castellanas
    Poeta Nicaragüense
    Ay Nicaragua, Nicaraguita Video Clip

    sábado, 25 de febrero de 2012 16:56