En post previos habiamos visto como descargar un informe desde Reporting Services y guardarlo en PDF. Ahora en este post vamos a coger un fichero PDF e imprimirlo.
Para eso utilizaremos el SHELL de windows. Lo que vamos a hace es simular lo que hace el boton derecho del raton sobre un fichero pdf
Cuando se desplegan las opciones tenemos la posibilidad de imprimir. Desde C/AL vamos a hacer esto mismo:
Name | DataType | Subtype |
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 |
objVerb | Automation | 'Microsoft Shell Controls And Automation'.FolderItemVerb |
i | Integer |
funcion imprimirarchivo(txtCarpeta text 1024,txtArchivo text 1024)
{
//Creamos el objeto SHELL y todos los relacionados para obtener el menu contextual
CREATE(objShell);
objFolder := objShell.NameSpace(DELCHR(txtCarpeta,'>','\'));
objFolderItems := objFolder.Items;
objFolderItem := objFolderItems.Item(txtArchivo);
objVerbs := objFolderItem.Verbs;
i := -1;
//Recorremos las opciones de menu para encontrar el que pone IMPRIMIR
REPEAT
i := i+1;
IF (i < objVerbs.Count) THEN BEGIN
objVerb := objVerbs.Item(i);
END;
UNTIL (ControlImprimir(objVerb.Name) = TRUE) OR (i >= objVerbs.Count);
IF (i <= objVerbs.Count) THEN BEGIN
//Ejecutamos la opción de menú que pqueremos
objVerb.DoIt;
EXIT(TRUE);
END ELSE BEGIN
EXIT(FALSE);
END;
}
//Funcion que nos devuelve si la opcion de menu es la que queremos
funcion imprimirarchivo(txtCarpeta text 1024,txtArchivo text 1024)
{
//Comprobamos que es la de imprimir.
IF STRPOS(UPPERCASE(DELCHR(txtTexto,'=','&')),'IMPRIMIR')>0 THEN BEGIN
EXIT(TRUE);
END;
EXIT(FALSE);
}
De esta manera podemos imprimir los ficheros deseados. Combinando la descarga del Reporting Services de post anteriores con la impresion de archivos de este post podemos imprimir los informes de reporting directamente sin la intervencion del usuario.
No hay comentarios:
Publicar un comentario