Archive

Articles taggués ‘4D’

Gestion de documents et 4D

4DAyant besoin de réaliser une gestion documentaire dans 4D, je me suis penché sur la possibilité de récupérer le contenu de documents afin de stocker les textes dans des champs indexés mots clés.

L’idée était donc de convertir des fichiers .rtf, .doc, .docx, .pdf en texte simple de manière à stocker tout ça dans des champs 4D.

Ceci devant être réalisé sous Mac, le postulat était relativement simple, je vais expliquer la manière dont j’ai abordé la chose.

Il existe dans le terminal de Mac OS X une commande magique ‘textutil’ qui est installée en standard et qui permet de manipuler des fichiers d’origines variées telles que .doc, etc..
Le seul format qu’il ne connait pas étant le PDF, j’ai été contraint d’utiliser un tool unix ‘pdftotext’ que l’on peut télécharger ici.

Dans 4D j’utilise donc la fonction LANCER PROCESS EXTERNE pour exécuter ces deux tools unix afin d’obtenir un fichier texte que je place ensuite dans un champ 4D.

Le code 4D pour les fichiers doc, docx, rtf…
$stin:=""
$stout:=""
$err:=""
$FilePathSource:="mondisk/mondoc.docx"
$FilePathDest:="mondisk/mondoc.txt"
LANCER PROCESS EXTERNE("textutil -convert txt "+$FilePathSource+" "+$FilePathDest;$stin;$stout;$err)

Pour les fichiers PDF j’utilise le tool ‘pdftotext’ qui n’est pas installé en standard dans Mac OS. Il y a juste un petit souci si l’on tente de l’utiliser comme pour textutil à partir de 4D car le tool ne sera pas reconnu pour son exécution. Il faut préciser le chemin complet du tool pour que 4D puisse executer la commande.

Cela donne pour les fichiers PDF :
$stin:=""
$stout:=""
$err:=""
$FilePathSource:="mondisk/mondoc.docx"
$FilePathDest:="mondisk/mondoc.txt"
LANCER PROCESS EXTERNE("/usr/local/bin/pdftotext "+$FilePathSource+" "+$FilePathDest;$stin;$stout;$err)

Pour récupérer ensuite le contenu des fichiers textes, il suffit de l’ouvrir dans 4D avec la commande Ouvrir Document et de lire son contenu.

$montexte:=""
$doc:=Ouvrir Document("mondisk:mondoc.txt")
RECEVOIR PAQUET($doc;$montexte;0;
MAXLONGTEXTEAVANTV11)
[matable]monchamp:=$montexte

Voilà, le tour est joué. J’espère que ces quelques lignes vous seront utiles.


Categories: Développement, Mac OS X Tags:

Configurer 4D Server v11 en accès 4D Client distant

22/09/2009 Comments off

Depuis la v11, 4D à besoin pour un accès distant en 4D Client d’un port supplémentaire. Le port par défaut est 19813 et peut-être changé dans les préférences de 4D. Il faut ouvrir un second port pour la communication 4D Client <-> 4D Server, ce port est le port paramétré dans les préférences plus 1.

Si le port est 19813, il faudra donc ouvrir également le 19814.

Categories: 4D, Développement Tags: