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

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.
---
·         I should use to declaire following variables
PDFCreator                     Automation                                'PDFCreator'.clsPDFCreator
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.

Imprimir PDF
Posted: 17 sep 15 11:37 (Spain) 


Hola! La impresión de PDF con BullZip resulta muy lenta para los usuarios.

{ CLEAR(BullZipPDF);
CREATE(BullZipPDF);
BullZipPDF.Init;
BullZipPDF.LoadSettings;
BullZipPDF.SetValue('Output','C:\Albaran '+"No."+'.pdf'); BullZipPDF.SetValue('Showsettings', 'never');
BullZipPDF.SetValue('ShowPDF', 'no');
BullZipPDF.SetValue('ShowProgress', 'no');
BullZipPDF.SetValue('ShowProgressFinished', 'no');
BullZipPDF.SetValue('SuppressErrors', 'yes');
BullZipPDF.SetValue('ConfirmOverwrite', 'no');
BullZipPDF.WriteSettings(TRUE); }

Hay alguna forma mas rápida para 2009 classic?? Se que con la 2013 esta el SAVEPDF pero no sirve para la Classic no? Gracias!!


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

Entradas populares de este blog

Formato y fórmulas de fechas

Grupo permisos de usuarios. NAV2016

Propiedades de la Page