From FAQ Filemaker

Tutoriel-Filemaker: Lecture de documents PDF

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

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

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 :

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

Si [Obtenir (NombreEnreg Total ) = 0 ]

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

Si [Not EstVide ( FFO__::ImageFacture )]

Activer rubrique [ FFO__::ImageFacture ]

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

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

Sinon

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 :

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==>
Récupéré sur http://cqfd-fmp.fr/index.php?n=Tutoriel-Filemaker.Script-PDF
Page mise à jour le 07 juillet 2008 à 12h02