Impresion en PDF ??

502 views
Skip to first unread message

Luis Salazar

unread,
Jun 9, 2013, 11:41:38 AM6/9/13
to publice...@googlegroups.com
Aqui en el grupo alguien publico un codigo para imprimir en PDF  . El codigo
es muy parecido a este (ya que lo modifique, solo los nombres de las variables)  
 

printer_ant = SYS(2001, 'Printer', 2)

printer_PDF = "SagePDFPrinter" && Por ejemplo

SET PRINTER TO NAME (printer_PDF)

REPORT FORM &_reporte TO PRINTER

SET PRINTER TO NAME (printer_ant)

--> SagePDFPrinter   es la impresora PDF

El punto es que procesa el reporte pero NO se a donde lo envia .. si a la impresora por Defecto (default) ???

>> Si alguien tiene otra solucion PLISSSS..

Gracias de antemano

 

Ricardo Pina

unread,
Jun 9, 2013, 12:01:39 PM6/9/13
to Grupo VFP
Hola Luis
 
Puedes usar FOXYPREVIEWER
sino te mando una función que baje hace un tiempo para hacer un pdf y enviarlo x mail automáticamente.
 
*----------------------------------------------------------------
*---------Función para convertir frx a pdf automatización--------
*--recibe nombre reporte, nombre archivo pdf, ubicación del pdf--
*----------------------------------------------------------------
FUNCTION ImpPdf
PARAMETERS lcRepo, lcPdf, lcUbi
=proclase()
DECLARE Sleep IN WIN32API INTEGER
ReadyState = 0 && Variable indiquant que l'imprimante n'est pas prête
PDFCreator = CREATEOBJECT("PDFCreator.clsPDFCreator")
PDFReady = CREATEOBJECT("PDFEvent") && Voir définition de la classe plus bas
EVENTHANDLER(PDFCreator,PDFReady)
WITH PDFCreator
* Démarrer sans lancer les travaux :
.cStart ("/NoProcessingAtStartup")
* Options de sauvegarde :
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = "&lcUbi"
.cOption("AutosaveFilename") = lcPdf
.cOption("AutosaveFormat") = 0 && 0 pour le format PDF
* Modification temporaire de l'imprimante par défaut :
DefaultPrinter = .cDefaultprinter
.cDefaultprinter = "PDFCreator"
.cClearcache
ENDWITH
REPORT FORM &lcRepo TO PRINTER NOCONSOLE
* Lancement de l'impression :
PDFCreator.cPrinterStop = .F.
* On attend jusqu'à ce que l'imprimante soit prête ou que 10 secondes se
soient écoulées :
c = 0
DO WHILE (ReadyState = 0) AND (c < 10)
c = c + 1
Sleep (500)
enddo
PDFCreator.cDefaultprinter = DefaultPrinter
Sleep (200)
PDFCreator.cClearcache
PDFCreator.cClose
RELEASE PDFCreator
RELEASE PDFReady
endfunc
PROCEDURE proclase
*--------------------------------------------
* Définition de la classe gérant les événements :
DEFINE CLASS PDFEvent AS Custom
IMPLEMENTS __clsPDFCreator IN "PDFCreator.clsPDFCreatorOptions"
* Evénement qui indique si l'imprimante est prête
PROCEDURE __clsPDFCreator_eReady() AS VOID
ReadyState = 1
ENDPROC
* Gestion des erreurs
PROCEDURE __clsPDFCreator_eError() AS VOID
ENDPROC
ENDDEFINE
=imppdf(Mireporte, NombrePDF, Destino)
 
*************************************************************
LOCAL lcPerfil AS CHARACTER, lcContrasenia AS CHARACTER , ;
lcDestinatario AS CHARACTER, lcTema AS CHARACTER , ;
lcCuerpo AS CHARACTER
LOCAL loOutlook AS "Outlook.Application", ;
loNameSpace AS OBJECT, loMailItem AS OBJECT
#DEFINE LF_CR CHR(10)+CHR(13)
*-- Datos del Mail
lcPerfil = "Prueba"
lcContrasenia = "prueba"
lcDestinatario = ""
lcTema = "Prueba: " + TTOC(DATETIME())
lcCuerpo = "Prueba enviando un mail desde Visual FoxPro." + LF_CR
lcCuerpo = lcCuerpo + "Saludos." + LF_CR
*-- Creo objetos Outlook y NameSpace
loOutlook = CREATEOBJECT("Outlook.Application")
loNameSpace = loOutlook.GetNameSpace("MAPI")
*-- Ejecuto los métodos
loNameSpace.Logon(lcPerfil , lcContrasenia)
loMailItem = loOutlook.CreateItem(0)
loMailItem.Recipients.ADD(lcDestinatario)
loMailItem.Subject = lcTema
loMailItem.Body = lcCuerpo
loMailItem.Send
loNameSpace.Logoff
loNameSpace = .NULL.
loOutlook = .NULL. 
 
Saludos
 
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

OMAR ROJAS RUBRICHE

unread,
Jun 12, 2013, 10:06:15 AM6/12/13
to publice...@googlegroups.com

Buenos días,

 

Lea gradezco si me la puedes regalar, estoy necesitando exactamente esta tarea.

 

Saludos,

             Imagen quitada por el remitente.

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

“El contenido de este documento y/o sus anexos son para uso exclusivo de su destinatario intencional y puede contener Información legalmente protegida por ser privilegiada o confidencial. Si usted no es el destinatario intencional de este documento por favor Infórmenos de inmediato y elimine el documento y sus anexos. Igualmente el uso indebido, revision no autorizada, retención, distribución, divulgación, reenvío, copia, impresión o reproducción de este documento y/o sus anexos está estrictamente prohibido y sancionado legalmente. Agradecemos su atención. Grupo Empresarial EPM” "The contents of this transmissions and its attachments are for exclusive use of the intended recipient and may contain privileged or confidential information. If you are not the intended recipient of this document, please immediately reply to the sender and delete this information and its attachments from your system. Likewise, the misuse, unauthorized review, any retention, dissemination, distribution, disclosure, forwarding, copying, printing or reproduction of this transmission, including any attachments, is strictly prohibited and punishable by law. Thank you for your attention. Grupo Empresarial EPM"

Luis Maria Guayan

unread,
Jun 12, 2013, 10:11:45 AM6/12/13
to publice...@googlegroups.com
Ya Cesar "regalo" FoxyPreviewer a toda la comunidad y lo puedes descargar libremente de: https://foxypreviewer.codeplex.com

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Ricardo Pina

unread,
Jun 12, 2013, 10:32:37 AM6/12/13
to Grupo VFP
Hola Omar
 
Mal te puedo regalar yo lo que no es mío, Como dice LMG su creador ya lo entrego a la comunidad .
 
Saludos
 
--
            

Antonio Meza

unread,
Jun 14, 2013, 2:04:05 PM6/14/13
to publice...@googlegroups.com
Hola Descarga Bullzip de la siguiente dirección, instala y luego agrega la función a tu proyecto y listo 


FUNCTION PdfBullzip
LPARAMETERS cFrx,cArchivo
loPdf = CREATEOBJECT('Bullzip.PDFPrinterSettings') 
IF TYPE('loPdf')='O' 
loPdf.SetValue('output', cArchivo)
loPdf.SetValue('DisableOptionDialog', 'no') 
loPdf.SetValue('ConfirmOverwrite', 'no')
*loPdf.SetValue("WatermarkColor","#FF9900")
loPdf.SetValue('Showsettings', 'never') 
loPdf.SetValue('ShowSaveAS', 'nofile') 
loPdf.SetValue('ShowPdf', 'no') 
loPdf.WriteSettings(.t.) 
SET CONSOLE OFF 
SET PRINTER TO NAME ("Bullzip PDF Printer") 
REPORT FORM &cFrx TO PRINTER 
      SET PRINT OFF 
           SET PRINTER TO DEFAULT 
      SET CONSOLE ON 
*       WAIT windows "PDF GENERADO EN: " + cArchivo
ELSE
* WAIT windows "ERROR DE OBJETO PDF"
ENDIF
ENDFUNC

Uso:

PdfBullzip("formato.frx","impresion.pdf")


Recuerda poner las rutas completas a las variables que necesita la función donde quieres que se guarde tu archivo PDF y donde se encuentra tu archivo FRX.

saludos
Antonio Meza

Angel Dario Rodriguez

unread,
Jun 14, 2013, 8:51:04 PM6/14/13
to publice...@googlegroups.com
Cuando ejecuto esta función me reporta el siguiente mensaje de error "File PDFBULLZIP.PRG does not exist" y nada imprime.


2013/6/14 Antonio Meza <solv...@gmail.com>

cristian topp

unread,
Jun 17, 2013, 12:41:04 AM6/17/13
to publice...@googlegroups.com
Antonio,tu función se ve muy buena, pero me entrega el siguiente error cuando quiero grabar el código del programa
 

Methods and events cannot contain nested procedures or class definitions

 

este es el codigo que lo puse en el evento clic de un botón
 
M_RESP=MessageBox(' Seguro del Proceso ',4+32,' ' )
if M_RESP=6
 tdir='\'+MNRO
 MKDIR &tdir

 SET CONSOLE OFF
 SET PRINTER TO NAME ("Bullzip PDF Printer")
 cFrx='avi_pago.frx'
 SELECT paso2
 GO top
 DO WHILE .not. EOF()
  cARCHIVO=tdir+'\'+ALLTRIM(nombre)+'.pdf'
  mrut=rut
  SELECT paso3
  SET FILTER TO RUT=mrut
  PdfBullzip("&cfrx","&cARCHIVO")
  SELECT paso2
  SKIP
 enddo

    SET PRINT OFF
    SET PRINTER TO DEFAULT
    SET CONSOLE ON
ENDIF
FUNCTION PdfBullzip
 LPARAMETERS cFrx,cArchivo
 loPdf = CREATEOBJECT('Bullzip.PDFPrinterSettings')
 IF TYPE('loPdf')='O'
  loPdf.SetValue('output', cArchivo)
  loPdf.SetValue('DisableOptionDialog', 'no')
  loPdf.SetValue('ConfirmOverwrite', 'no')
  loPdf.SetValue('Showsettings', 'never')
  loPdf.SetValue('ShowSaveAS', 'nofile')
  loPdf.SetValue('ShowPdf', 'no')
  loPdf.WriteSettings(.t.)
  REPORT FORM &cFrx TO PRINTER
 ENDIF
ENDFUNC
 
 
los cursores paso2 y paso3 contienen la información que se necesita para la creación del reporte.
en el fondo este codigo crea formularios de cobranza para clientes con deuda.
el error me lo entrega al parecer en la linea PdfBullzip("&cfrx","&cARCHIVO")
lo probe con PdfBullzip("cfrx","cARCHIVO")
o con =PdfBullzip("&cfrx","&cARCHIVO")
 

Edwin Delgado

unread,
Jun 17, 2013, 11:01:34 PM6/17/13
to publice...@googlegroups.com
Hola Cristian el error q te genera puede ser porque en evento click no puedes anidar una función o procedimiento, si debes usarlos, como es en este caso los debes colocar en un método del forma o un PRG q te funcione como librería de procedimientos y llamarlos desde el evento click.
Espero haberme explicado, saludos.

Antonio Meza

unread,
Jun 18, 2013, 12:52:29 PM6/18/13
to publice...@googlegroups.com
Hola, a la función no le debes modificar el código, solo debes llamarla desde cualquier parte del programa y enviarle las rutas de tus archivos.

Por ejemplo tengo un archivo AMPFUNCIONES.PRG y en mi PRG principal del sistema llamo a las funciones así

* Iniciar Procedimientos y Funciones
SET PROCEDURE TO funciones\ampfuncion.prg

Ya desde cualquier parte del programa solo ejecuto así:

PdfBullzip("formato.frx","impresion.pdf")


Mas detallado, supongamos que el archivo FORMATO.FRX se encuentra en la ruta D:\factura\frx\formato.frx y que quiero guardar mi formato en la siguiente ruta con el siguiente nombre D:\factura\digital\impresion.pdf, entonces lo que hago es lo siguiente:

PdfBullzip("D:\factura\frx\formato.frx","D:\factura\digital\impresion.pdf")

Si voy a usar variables quedaría así:

xFormatoFRX = "D:\factura\frx\formato.frx"
xImpresionPDF = "D:\factura\digital\impresion.pdf"
PdfBullzip(xFormatoFRX,xImpresionPDF)

Espero haberte explicado!!!

saludos
Antonio Meza

cristian topp

unread,
Jun 18, 2013, 10:59:46 PM6/18/13
to publice...@googlegroups.com
Gracias Edwin, perfectamente entendido, pero encontré una solución con foxpreview, si alguien lo necesita puedo traspasarlo
Saludos...

Angel Dario Rodriguez

unread,
Jun 19, 2013, 8:59:13 AM6/19/13
to publice...@googlegroups.com
Buenas, envíame esa solución de foxpreview.
 
Gracias anticipadas.


2013/6/18 cristian topp <cristi...@gmail.com>

Ricardo Pina

unread,
Jun 19, 2013, 12:08:55 PM6/19/13
to Grupo VFP
Hola Angel
 
Foxyprewer es una excelente herramienta que su autor Cesar Chalom entregó a la comunidad y la podes descargar de codeplex
 
 
Saludos

Angel Dario Rodriguez

unread,
Jun 19, 2013, 1:57:02 PM6/19/13
to publice...@googlegroups.com
OK.GRACIAS.


2013/6/19 Ricardo Pina <ric...@gmail.com>

HernanCano

unread,
Jun 19, 2013, 7:43:30 PM6/19/13
to publice...@googlegroups.com
Pero entendiste la solución que te dan Edwin y Antonio, ¿o no?
Por que es grave que no sepas a qué se refieren...
Con FoxyPreviewer es mucho más fácil, pero....¿resolviste tu duda original? (es de concepto, no de clases ni de PDF ni de BullZip, ni de VFP, ni de Windows ni de likiliki,...)

Angel Dario Rodriguez

unread,
Jun 20, 2013, 7:24:20 AM6/20/13
to publice...@googlegroups.com
Antonio Meza, hice exactamente lo que indicas y todo procede como que se va a generar el reporte, pero no se donde lo guarda, no obstante yo le indico en que carpeta y con que nombre lo quier guardar. Que podría estar ocurriendo?


2013/6/19 Angel Dario Rodriguez <angel....@gmail.com>

Antonio Meza

unread,
Jun 20, 2013, 3:52:06 PM6/20/13
to publice...@googlegroups.com
la variable o la ruta si es correcta? porque si no existe la carpeta o no tienes permiso de escritura no va a realizar nada.

Si me permites hoy en la noche te mando un ejemplo para que lo ejecutes y veas como funciona, para que mañana lo revises.

saludos.

Angel Dario Rodriguez

unread,
Jun 20, 2013, 9:46:21 PM6/20/13
to publice...@googlegroups.com
Le puse como ruta el root (raíz) del disco con pleno permiso de acceso. Esperare que me envíes ese ejemplo.
 
Gracias anticipadas.
 
Angel Dario Rodríguez.


2013/6/20 Antonio Meza <solv...@gmail.com>

Antonio Meza

unread,
Jun 20, 2013, 11:28:58 PM6/20/13
to publice...@googlegroups.com
Te anexo una carpeta comprimida con www.7-zip.org que es gratuito.

Hola antes de ejecutar el inicio.prg debes configurar las rutas reales donde copies el programa, ya que para generar el formato pdf debes enviarle la ruta completa, a diferencia del formato FRX que no es necesario.

cualquier duda me avisas.
pdfbullzip.7z

Angel Dario Rodriguez

unread,
Jun 21, 2013, 7:52:49 AM6/21/13
to publice...@googlegroups.com
Gracias Antonio. La probare.


2013/6/20 Antonio Meza <solv...@gmail.com>

Angel Dario Rodriguez

unread,
Jun 21, 2013, 10:10:16 PM6/21/13
to publice...@googlegroups.com
Acabo de hacer una prueba éxitos con el ejemplo que me enviaste, solo tengo que empezar a ajustar los informes que necesito.
 
Te doy todas las Gracias del Mundo Antonio.
 
Atte. Angel Dario Rodríguez.


2013/6/21 Angel Dario Rodriguez <angel....@gmail.com>

Antonio Meza

unread,
Jun 22, 2013, 11:29:15 PM6/22/13
to publice...@googlegroups.com
Que bueno que te funciono, pero porque dices que tienes que ajustar los informes que necesitas?

El generar el PDF no debes cambiarle nada a tus formatos .frx,!!!

saludos
Reply all
Reply to author
Forward
0 new messages