Hola Mario

     Yo uso esta función que encontré en algún lado y funciona muy bien:

                 
a=imppdf(c_nombrereporte,c_nombre_docu_guardar,c_nombre_carpeta)
             
       Primero tenés que ir al pdfcreator y en sus opciones tildar autoguardado

Aquí va la función:

*---------------------------------------------------------------- 
*---------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 
 

************************************************************* 
*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 = "pru...@portalfox.com" 
*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
Marcelo



________________________________
 De: Mario Andrés Ageno <mario.ag...@sanjustosf.com.ar>
Para: GUFA List Member <GUFA@mug.org.ar> 
Enviado: martes, 19 de junio de 2012 20:12
Asunto: [GUFA] PDF Creator
 

Hola Grupo
 
Como puedo hacer para crear los archivos con PDF Creator, pero el nombre 
que quiero que me grabe es el numero de la factura y no el nombre del 
reporte
supuestamente con <Title> podría ser pero no tengo forma desde VFP 
enviar un Titulo
 
Aclaro que solo instale el PDF como una impresora mas y la selecciono al 
momento de emitir el reporte
 
Gracias

Responder a