Changements récents - Rechercher:

Tutoriel Filemaker

  1. Structure
  2. Modèles
  3. Opérations diverses
  4. Calculs
  5. Scripts
  6. Privilèges d'accès

Filemaker avancé

  1. Partage des données
  2. Astuces et Exemples
  3. Développement

Règles de nommage

Versions de FileMaker Pro

Liens utiles Contact Commentaires

edit SideBar

Lecture de documents PDF

<==Boucles ^ Scripts Boite de dialogue==>

Dans cette page, nous aurons l'occasion d'aborder plusieurs opérations :

  • Utilisation d'une variable pour exporter un fichier
  • Lecture d'un document PDF dans FileMaker Pro
  • Utilisation des noms d'objets onglets pour leur navigation
  • Utilisation du Web Viewer autrement que pour accéder à Internet

Nous allons également aborder le délicat problème de l'utilisation d'une même base sur des plateformes différentes. En effet, le comportement de FileMaker peut parfois différer entre les Mac et les PC. C'est notamment le cas pour la lecture des PDF. En effet, hors l'utilisation de QuickTime, propre aux MacIntosh, il n'est pas possible de lire directement un document PDF dans une rubrique Multimédia de FileMaker Pro, si ce document est stocké "en dur" dans la rubrique, au contraire d'une image (par contre, s'il est inséré en tant qu'objet "lié", il est parfaitement lisible).

Nous allons donc utiliser deux méthodes de lecture des PDF :

  • Une méthode qui fonctionne partout, mais reste sensible sur MacIntosh :
    • l'exportation d'une copie du PDF vers un endroit connu et normalement présent au même endroit sur tous les ordinateurs
    • la lecture de ce fichier ainsi exporté à l'aide d'un Web Viewer
  • Une méthode spécifique MacIntosh, qui ne fonctionne pas avec les PC :
    • importation Quicktime

Attention
La méthode du Web Viewer permet de lire les pdf sur Apple à l'aide d'Acrobat Reader (comme sur PC). Toutefois, cette méthode est parfois, sur certains Mac, source de fermeture inopinée (en français de plantage) de FileMaker.

Description
Modèle

Le script




Description


Filemaker Pro permet de stocker dans des rubriques multimedia des images ou des fichiers. Lorsqu'un document pdf est stocké (par exemple la facture d'un fournisseur), s'il est mis dans la rubrique Multimedia par le menu "Insertion => Fichier", seule l'icône du fichier apparait, si on utilise "Insertion => Image", on peut voir le document, mais cette visualisation se limite à la première page, enfin, s'il est importé par "Insertion => Quicktime" (normalement destiné aux fichiers sons et video), il est lisible sur un Mac uniquement

Dans notre fichier, sur la table FFO_FacturesFournisseurs, nous voudrions stocker les factures reçues en format PDF, et mettre un script au point pour les lire. On crée d’abord une rubrique ImageFacture dans la table FFO, de type multimedia, et un modèle vierge avec cette rubrique, FFO_Image. Les fichiers PDF seront insérés en tant qu'image, sans liaison externe, dans la rubrique multimédia "ImageFacture". En effet, on prévoit que la facture reçue peut se trouver sous une autre forme de fichier, GIF ou JPEG par exemple, auquel cas elle sera directement lisible dans la rubrique multimédia (si elle ne fait qu'une page, ce qui est le cas d'une image).

Un bouton ad hoc devra nous permettre d'insérer l'image aux bons formats et de lire le document. S'il s'agit d'un PDF (ce que nous allons donc tester), nous devrons le placer automatiquement à l'endroit désigné pour que le Web Viewer puisse le retrouver et le lire.

On crée également une rubrique ImageFactureQ qui permettra de recevoir le document au format Quicktime.

Modèle


On crée donc un modèle vierge, basé sur l'ancre FFO__, et on le prévoit assez haut, un peu plus grand que la taille d'une page DIN A4, repérable par les lignes hachurées sur le modèle. En effet, il s'agira le plus souvent de stocker l'équivallent PDF d'une feuille DIN A4. On nomme ce modèle FFO_Image.

Sur le modèle, on place un Onglet à 3 onglets, l'un appelé "Image", l'autre "PDF" et le troisième "PDF Quicktime". La largeur de l'onglet doit être plus grande que la position de la ligne hachurée verticale. Question cosmétique, les onglets sont justifiés et carrés (c'est plus discret...) :

Lorsque c'est fait, on nomme chacun des onglets à l'aide de la fenêtre "infos". Pour ce faire, on clique au besoin 2 fois sur chaque onglet pour qu'il soit sélectionné (une bordure l'entoure) et on encode le nom dans la fenêtre "Infos" : Image est nommé image, PDF est nommé pdf et PDF Quictime est nommé pdfq:

On place la rubrique ImageFacture sur l’onglet image, en prenant toute la hauteur et largeur possible, respectant +/- les proportions DIN A4. Dans les options d’image, on précise de réduire l’image en conservant les proportions d'origine :

On place de la même manière notre rubrique ImageFactureQ sur l'onglet PDF Quicktime.

Web viewer

Il existe, dans l’application FileMaker, un dossier (sous-directory) appelé "Web" et rarement utilisé. On va l’utiliser pour stocker les exports des documents PDF et les lire. Sur l’onglet "pdf", on place un Web Viewer, et on y met comme adresse (URL) dans la fenêtre de calcul :

Cas ( Obtenir ( PlateformeSystème ) = "-2" ;
"file:" &
Obtenir ( CheminFileMaker ) &
"web/" &
ObtenirTexte ( FFO__::ImageFacture )
;
"file:/" &
Obtenir ( CheminFileMaker ) &
"Web/" &
ObtenirTexte ( FFO__::ImageFacture )

Quelques explications :

Cas ( Obtenir ( PlateformeSystème ) = "-2".
Nous connaissons la fonction CAS, ici elle va nous permettre de différencier les systèmes sous Windows des Mac. Nous allons avoir deux cas de figure, car le chemin d'accès à notre dossier "web" est très légèrement différent. En effet, sur MacIntosh, un / de plus doit être présent après "File:" !
Obtenir ( PlateformeSystème ) donne trois résultats possibles à partir de la version 8.5, Intel et PPC n'étant pas différenciés dans la version 8) : -2 pour Windows, et 1 ou -1 pour les Mac (Intel ou PPC). Si nous testons le cas sur un résultat -2, notre première expression sera pour Win et le résultat par défaut nécessairement pour le reste.

ObtenirTexte ( FFO__::ImageFacture ) donne le nom du fichier PDF stocké dans la rubrique multimédia "ImageFacture", pour autant qu’il ne soit pas lié, mais stocké en dur dans la rubrique.

L’adresse ainsi calculée devrait donner par exemple ceci en Windows :

File:/Program Files/FileMaker/FileMaker Pro 8.5 Advanced/web/MonFichier.pdf

ou en Mac :

File://MonOrdi/Applications/FileMaker Pro 9 Advanced/Web/MonFichier.pdf

Les parties en gras sont les chaînes de caractères fixes de la formule.

Le WV est élargi aux mêmes proportions que la rubrique image sur l’autre onglet :

Le script


Voici le script brut :

Il nécessite quelques explications...

  • On démarre le script en allant sur le modèle FFO_Image. C'est une sécurité en fonction de l'endroit d'où il sera déclenché.

Si [Obtenir (NombreEnreg Total ) = 0 ]

  • Pour que notre script fonctionne, il faut au moins un enregistrement, vierge ou non. Au cas où, notre petit test sur Obtenir (NombreEnreg Total ) vérifie combien la table FFO comporte d'enregistrements et en crée un si nécessaire.

Aller à l'objet [ Nom d'objet : "image" ]

  • On se place sur l’objet onglet "image" par la commande Aller à l'objet (d'où l'intérêt de nommer nos objets).

Si [Not EstVide ( FFO__::ImageFacture )]

  • On contrôle via la commande Not EstVide ( FFO__::ImageFacture ) si la rubrique sélectionnée contient déjà une image ou non. Si la rubrique n'est pas vide, on crée un nouvel enregistrement, afin de préserver le document déjà présent et ne pas l'écraser.

Activer rubrique [ FFO__::ImageFacture ]

  • On active ensuite la rubrique ImageFacture (pour s'assurer d'être dans la bonne rubrique) et on insère une image. Comme on utilise la commande Insérér image [] sans préciser de fichier source, une fenêtre s'ouvrira, demandant quel fichier on veut insérer. L'utilisateur choisira alors librement l'image ou le pdf à insérer, où qu'il soit sur son ordinateur. Il faudra par contre prendre soin de ne pas cocher "Stocker uniquement la référence au fichier" pour bien insérer l'image "en dur".

Si [ Fin ( ObtenirTexte ( FFO__::ImageFacture ) ; 3 ) = "pdf" ]

  • On récupère ici les 3 dernières lettres - Fin (...) ; 3 ) - du contenu de la rubrique multimédia FF0__::ImageFacture, converti en texte par la fonction "ObtenirTexte(). Le test porte sur la comparaison de ces 3 dernières lettres avec "pdf". S'il est vérifié, il s'agit d'un .pdf. Nous allons donc le "sauvegarder" dans notre sous directory-web pour que le WV puisse le lire.
  • On défini dans une variable $chemin le chemin d'accès à ce sous-dossier "Web"
  • Puis on exporte le contenu de la rubrique au bon endroit grâce à $chemin. Nous sommes obligé de passer pas cette variable, car FileMaker permet de définir un chemin et un fichier d'exportation à l'aide d'une variable unique, qui doit contenir l'entièreté de l'information : chemin + nom de fichier. Donc, pas de mix ici entre du texte et une variable : uniquement la variable !
  • On valide pour l'opération soit bien prise en compte par FileMaker

Si [ Obtenir (PlateformeSystème) ≠ "-2" ]

  • Nous posons ici une condition dans la condition (un si dans un si). En effet, la partie qui suit si la condition est vérifiée ne concerne que les MacInstosh (dont la plateforme système est -1 ou 1).
    • Sur un Mac, donc, nous activons notre onglet PDF Quicktime et la rubrique ImageFactureQ
    • Pour insérer notre fichier en Quicktime, il faut indiquer le chemin. Or nous savons maintenant où il se trouve, puisque nous l'avons placé dans notre sous-répertoire Web. Nous aurions pu utiliser notre variable $chemin, sauf que le chemin d'importation d'un fichier en quicktime commence non pas par File: mais par moviemac: (sur Mac). Donc nous redéfinissons notre variable $chein et l'utilisons dans la commande insérer QuickTime.

Sinon

  • Si nous sommes sur Mac, nous pouvons rester sur cet onglet et terminer le script. Mais si nous sommes sur PC, nous préférons évidemment afficher notre onglet "pdf".

Remarque sur le SI vérifiant le format pdf : comme vous pouvez le constater, si cette condition n'est pas vérifiée, on va directement à la fin du script. Normal, on a inséré une image et on reste sur cet affichage.

Pour chaque nouvelle facture fournisseur reçue sous forme digitale, il suffit à présent de lancer le script pour stocker le document et lire ce qu'on a reçu :

  • Soit une image classique lue dans la rubrique Imagefacture, multimédia
  • Soit un document PDF lu dans le Web Viewer
  • Soit un document PDF lu en QickTime (sur Mac)

Remarque sur la lecture du PDF en QuickTime : il faut cliquer sur l'image pour faire apparaître tout en bas la barre de lecture. Comme il ne s'agit pas d'un film, nous utiliserons pour faire défiler les pages les deux symboles situés à droite de cette barre, le curseur se déplaçant en fonction du nombre de pages vues et restantes.

Voilà, reste à placer un bouton sur le modèle FFO_Fiche par exemple pour exécuter ce script. En effet, de cette façon, il sera bien posé sur l'enregistrement d'une facture pour laquelle nous souhaitons mettre une image.

Nous n'aurons ensuite plus qu'à le ranger au bon endroit dans notre liste de scripts et, bien sûr à le commenter comme il faut... N'oublions pas non plus de ranger notre nouveau modèle dans la liste, avec les modèles FFO_.

Et voici notre fichier à jour. Bien sûr il ne contient pas de pdf, puisque c'est à vous de lui en indiquer.

<==Boucles ^ Scripts Boite de dialogue==>
Éditer - Historique - Imprimer - Changements récents - Rechercher
Page mise à jour le 07 juillet 2008 à 10h02