Imprimir documento externo en PDF
Se puede hacer con una
utilidad de ExpandIT que se llama MAILIT. Mediante código CAL puedes imprimir
documentos en PDF/XML y programar envíos por email de esos documentos.
Adcionalmente puede añadir código html con contenido de NAV en el cuerpo del
mensaje. El mailIT dispone de 80 funciones para programación. Ejm. Envío de
facturas en PDF/XML Recordatorio de pago Envío de informes Newsletters etc.
Llámanos. www.expandit.es Un saludo Chema
Mira este post
http://www.tipsdbits.com/Foro/tabid/76/forumid/2/threadid/14731/scope/posts/Default.aspx
http://www.tipsdbits.com/Foro/tabid/76/forumid/2/threadid/14731/scope/posts/Default.aspx
Hola
Si que se puede.
Puedes usar las DLL estandares de Windows.
Seria una cosa asi.
Create 2 Nuevas funciones donde quieras.
Funcion 1: SplitDirFile
---------------------------
Valiables locales:
Name DataType Subtype Length
PointBreak Integer
ExitLoop Boolean
SplitDirFile(FullString : Text[250];VAR JustDir : Text[250];VAR JustFileName : Text[250])
ExitLoop := FALSE;
PointBreak := STRLEN(FullString);
WHILE (NOT ExitLoop) OR (PointBreak <= 1) DO
IF COPYSTR(FullString,PointBreak,1) = '\' THEN BEGIN
JustFileName := COPYSTR(FullString,PointBreak + 1);
ExitLoop := TRUE;
END ELSE
PointBreak -= 1;
JustDir := COPYSTR(FullString,1,PointBreak);
Funcion 2: PrintFile
------------------------
Variables Locales
Name DataType Subtype Length
objShell Automation 'Microsoft Shell Controls And Automation'.Shell
objFolder Automation 'Microsoft Shell Controls And Automation'.Folder
objFolderItems Automation 'Microsoft Shell Controls And Automation'.FolderItems
objFolderItem Automation 'Microsoft Shell Controls And Automation'.FolderItem
objVerbs Automation 'Microsoft Shell Controls And Automation'.FolderItemVerbs
Dir Text 250
Filename Text 250
PrintFile(PrintThisFile : Text[250])
IF ISCLEAR(objShell) THEN
CREATE(objShell);
SplitDirFile(PrintThisFile,Dir,Filename);
objFolder := objShell.NameSpace(Dir);
objFolderItems := objFolder.Items;
objFolderItem := objFolderItems.Item(Filename);
objFolderItem.InvokeVerb('PRINT');
objVerbs := objFolderItem.Verbs;
En tu codigo de NAvision, llamas a la funcion PRINTFILE y le pasa como parametro la ruta + nombre de fichero. Da igual de que tipo sea. Por defecto te lo imprimira en la impresora predeterminada de tu equipo.
---
Si que se puede.
Puedes usar las DLL estandares de Windows.
Seria una cosa asi.
Create 2 Nuevas funciones donde quieras.
Funcion 1: SplitDirFile
---------------------------
Valiables locales:
Name DataType Subtype Length
PointBreak Integer
ExitLoop Boolean
SplitDirFile(FullString : Text[250];VAR JustDir : Text[250];VAR JustFileName : Text[250])
ExitLoop := FALSE;
PointBreak := STRLEN(FullString);
WHILE (NOT ExitLoop) OR (PointBreak <= 1) DO
IF COPYSTR(FullString,PointBreak,1) = '\' THEN BEGIN
JustFileName := COPYSTR(FullString,PointBreak + 1);
ExitLoop := TRUE;
END ELSE
PointBreak -= 1;
JustDir := COPYSTR(FullString,1,PointBreak);
Funcion 2: PrintFile
------------------------
Variables Locales
Name DataType Subtype Length
objShell Automation 'Microsoft Shell Controls And Automation'.Shell
objFolder Automation 'Microsoft Shell Controls And Automation'.Folder
objFolderItems Automation 'Microsoft Shell Controls And Automation'.FolderItems
objFolderItem Automation 'Microsoft Shell Controls And Automation'.FolderItem
objVerbs Automation 'Microsoft Shell Controls And Automation'.FolderItemVerbs
Dir Text 250
Filename Text 250
PrintFile(PrintThisFile : Text[250])
IF ISCLEAR(objShell) THEN
CREATE(objShell);
SplitDirFile(PrintThisFile,Dir,Filename);
objFolder := objShell.NameSpace(Dir);
objFolderItems := objFolder.Items;
objFolderItem := objFolderItems.Item(Filename);
objFolderItem.InvokeVerb('PRINT');
objVerbs := objFolderItem.Verbs;
En tu codigo de NAvision, llamas a la funcion PRINTFILE y le pasa como parametro la ruta + nombre de fichero. Da igual de que tipo sea. Por defecto te lo imprimira en la impresora predeterminada de tu equipo.
---
·
I should use
to declaire following variables
PDFCreator
Automation
'PDFCreator'.clsPDFCreator
PDFCreatorOption Automation 'PDFCreator'.clsPDFCreatorOptions
PDFCreatorError Automation 'PDFCreator'.clsPDFCreatorError
PDFCreatorOption Automation 'PDFCreator'.clsPDFCreatorOptions
PDFCreatorError Automation 'PDFCreator'.clsPDFCreatorError
Lo primero es usar un automatismo de impresora PDF.
Con el automatismo del PDF Creator por ejemplo, puedes hacerlo. Hay varios post por aquí en tipsdbits para poder cosas similares, o puedes ver este de dynamicuser:
http://dynamicsuser.net/forums/p/24695/132146.aspx.
Para el tema de las carpetas, el automation:
Name DataType Subtype Length
FileScript Automation 'Microsoft Scripting Runtime'.FileSystemObject
con algo parecido a esto en el codigo, tienes que utilizarlo para crear el arbol de carpetas que necesites:
IF NOT FileScript.FolderExists(ConfigPDF."Ruta ficheros salida"+'\'+NombreCliente) THEN
FileScript.CreateFolder(ConfigPDF."Ruta ficheros salida"+'\'+NombreCliente);
Para lo del nombre del cliente en el nombre del fichero o carpeta, yo personalmente no usaria ese campo, porque pueden introducir algun caracter extraño o similares, que admita NAV pero que windows no lo acepte en nombre de fichero o si lo quieres asi es cuestión de unificar por codigo que todos los caracteres especiales tipo barras \ y demás se conviertan en _, por ejemplo.
Espero que te sirva.

|
|
|
|
|
|
SAVEPDF solo
está para la versión en roles (no classic) que utiliza Reporting Services. En
classic debes utilizar el "truco" de la impresora bullzip o similar.
Aunque yo lo tenía funcionando en algún cliente y nunca se quejaron de que
fuera lento. ¿Has probado en otros PCs?
Comentarios
Publicar un comentario