ONYX - 9.0 - Utilisation
Gestion d'indexation
Sommaire
Liste des index et de leurs valeurs
Le commutateur -dumpIndex permet de lister tous les critères d’indexation présents dans le document XPS.
Exemple:
map_xps -infile:/tmp/invoice.xps -dumpIndex CustomerID InvoiceID InvoiceDate CustomerName MAPSUBJCT MAPSEND NUMPAGE
Utilisé avec le nom d’un index en particulier, il liste l’ensemble des valeurs différentes de cet index :
map_xps -infile:/tmp/invoice.xps -dumpIndex:CustomerID 10638 4274 11426 4533 ...
En rajoutant le commutateur -duplicateindex
, les valeurs de l’index sont listées sur toutes les pages du document XPS y compris celles qui ont la même valeur :
map_xps -infile:/tmp/invoice.xps -dumpIndex:CustomerID -duplicateindex 10638 4274 11426 11426 4533 4533 ...
Indexation d'un document
Réplications des valeurs d'un index
Dans certains cas, il se peut qu’un critère d’indexation soit bien présent sur toutes les pages mais sans valeur définie pour certaines pages ou bien que le critère d’indexation ne soit pas présent sur toutes les pages. Le commutateur copyEmptyIndex permet alors de réindexer le document en copiant, pour les pages sans valeur d’index, la valeur de l’index se trouvant sur la page précédente.
Exemple :
map_xps -infile:/tmp/invoice.xps -copyEmptyIndex:InvoiceID
Indexation du fichier avant passage de la commande :
Page | Index | Valeur de l’index |
---|---|---|
1 | InvoiceID | 1 |
2 | Texte de la cellule | |
3 | InvoiceID | 2 |
4 | InvoiceID | 3 |
5 | InvoiceID | Texte de la cellule |
Indexation du fichier après passage de la commande :
Page | Index | Valeur de l’index |
---|---|---|
1 | InvoiceID | 1 |
2 | InvoiceID | 1 |
3 | InvoiceID | 2 |
4 | InvoiceID | 3 |
5 | InvoiceID | 3 |
Ajout de critères d'indexation(Statique)
Le commutateur -addCriteria
permet d’ajouter un ou plusieurs critères sur un document. La syntaxe générale est :
-addCriteria:Nom_index=valeur
Exemple : ajout d’un ou plusieurs index avec la même valeur sur toutes les pages
map_xps -infile:/tmp/in.xps -outfile:/tmp/out.xps -addCriteria:NumOrder=123456 -addCriteria:Date=17.02.2015
Ajout de critères d'indexation(Dynamique)
Plus généralement, les valeurs de l’index ajouté seront issues d’une extraction préalable d’informations texte contenues dans le document XPS lui-même sur chacune de ses pages. Ces informations, stockées temporairement dans un fichier /tmp/values.txt, sont réutilisées pour l’ajout du critère avec la syntaxe suivante :
map_xps "-infile:/tmp/in.xps" "-outfile:/tmp/out.xps" "-addCriteria:NumOrder=FILE:/tmp/value.txt"
Extraction des valeurs de critère
Le principe est de rechercher des informations contenues dans le document et de les extraire (commutateur -extract:xxx) dans un fichier temporaire pour ensuite les ajouter comme valeurs d’un critère d’indexation du même document. Le fichier temporaire créé est au format texte, en Unicode, avec la syntaxe suivante : « valeur[TAB]page[CRLF] ». La collecte des informations dans le document peut se faire par mot clé (commutateur -filter:xxx) ou par position (commutateur -box:xxx). Les informations retournées peuvent être nettoyées des espaces superflus avant et/ou après le texte avec les commutateurs suivants :
-ltrim : suppression des espaces avant le texte
-rtrim : suppression des espaces après le texte
-trim : suppression des espaces avant et après le texte
Exemple 1 : recherche par mot clé
map_xps "-infile:/tmp/invoice.xps" "-extract:/tmp/values.txt" "-filter:Invoice for order" "-length:10" "-shift:2" "-rtrim"
⇒ extraction de 10 caractères situés deux caractères après le mot cléInvoice for orderen supprimant les espaces superflus après le texte retourné.
Exemple 2 : recherche par position
map_xps "-infile:/tmp/invoice.xps" "-extract:/tmp/values.txt" "-box:100,150,180,30,mm"
Les paramètres de la box précisent ses dimensions : xx.xx,xx.xx,xx.xx,xx.xx[,cm|in|mm]
- quatre nombres décimaux spécifiant dans l’ordre : top (haut), bottom (bas), left (gauche), right (droite)
- le séparateur de décimale est le ‘.’
- le séparateur de valeurs est ‘,’ ou ‘;’
- le dernier paramètre (optionnel) est l’unité des coordonnées : en points (pour une résolution de 96dpi) par défaut, en millimètres (mm), en pouces (in) ou en centimètres (cm)
Export des index et de leurs valeurs
Le principe est la création d’un fichier d’index à partir d’un document en vue de son archivage dans un logiciel tiers. Les fichiers d’index produits en standard par ONYX Server peuvent être au format TXT, XML, ou IND (compatible avec Content Manager). Cet export des index dans un fichier est commandé par le commutateur -indexfile:xxx. L’extension du fichier d’export pilote son type.
Le paramètre -duplicateindex
permet d’exporter également les index dont la valeur est la même sur plusieurs pages.
Le paramètre -exportemptyindex
permet d’exporter également les index qui n’ont pas de valeur.
Exemples :
map_xps -infile:/tmp/invoice.xps -indexfile:/tmp/file.txt [-duplicateindex] [-exportemptyindex]
map_xps -infile:/tmp/invoice.xps -indexfile:/tmp/file.xml [-duplicateindex] [-exportemptyindex]
map_xps -infile:/tmp/invoice.xps -indexfile:/tmp/file.ind [-duplicateindex] [-exportemptyindex]
Traitements sur les index
Tri
Le principe est de trier (commutateur -sort:xxx) un document XPS suivant les valeurs d’un ou plusieurs critères d’indexation. Un seul fichier sera créé en sortie. Le tri s’effectue par ordre croissant sur des valeurs numériques par défaut. L’utilisation de l’option ALPHA permet de réaliser un tri sur des valeurs alphanumériques, l’option REVERSE permet un tri par ordre décroissant.
Exemples :
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice.pdf -sort:CustomerID -toPDF
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice.pdf -sort:ALPHA:CustomerName -toPDF
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice.pdf -sort:CustomerID,InvoiceID -toPDF
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice.pdf -sort:ALPHA:CustomerName,REVERSE:InvoiceID -toPDF
Éclatement
Le principe est d’éclater un document suivant les valeurs d’un ou plusieurs critères d’indexation. Autant de fichiers peuvent être créés en sortie qu’il y a de valeurs différentes du ou des critères utilisés. Ici, pas de commutateur particulier, mais une syntaxe précise à respecter pour commander l’éclatement : [[Nom_index]].
Exemples :
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice_[[CustomerID]].pdf -toPDF
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice_[[CustomerID]]_[[InvoiceID]].pdf -toPDF
Éclatement volumique
Le mode BUNDLEONINDEX permet de créer des lots en fonction du nombre de pages pour chaque valeur de critère (par exemple : un fichier avec les documents comptant de 1 à 4 pages pour chaque valeur de critère, un fichier pour les documents comptant de 5 à 9 pages, un fichier pour les documents de plus de 10 pages). Il est possible de créer autant de lots que souhaité.
Exemple :
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice_[[BUNDLEONINDEX,MAPSEND,1,5,10]].pdf -toPDF
En mode BUNDLEONINDEX, l’éclatement peut également se faire suivant un nombre de feuilles (en fonction des informations de recto/verso), la syntaxe devient alors :
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice_[[BUNDLEONINDEX=SHEET,MAPSEND,1,5,10]].pdf -toPDF
Filtres ou extraction de pages
Le principe est d’isoler certaines pages d’un document XPS en fonction des valeurs d’un ou plusieurs critères d’indexation. Cela peut servir notamment pour créer un document en sortie ne concernant que certains clients. Le commutateur -filter:xxx est utilisé dans ce cas. Les opérateurs mathématiques (=, <, >, <=, >=) et logiques (AND, OR) peuvent être employés pour des filtres complexes sans oublier les parenthèses de priorités.
Exemples :
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice_426.pdf -toPDF -filter:CUSTOMER=426
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/extract.pdf -toPDF-filter:(CUSTOMER=4026) OR (CUSTOMER=1458) AND (PRICE=15)
Cela peut également s’avérer très utile pour n’effectuer des actions que sur certaines pages dépendant de valeurs de critères, notamment la gestion des options de finition (PrintTickets).
Hors gestion des index, un autre commutateur permet d’extraire des pages d’un document XPS : -pages:xxx. Les valeurs des pages peuvent être définies par :
- des numéros unitaires séparés par des virgules : -pages:1,5,6,7,12
- des intervalles de pages : -pages:5-7
- une combinaison des deux : -pages:1,5-7,12
- le caractère ‘*’ peut être utilisé dans un intervalle pour préciser la fin du document
- les pages à extraire peuvent être inscrites dans un fichier texte externe avec la syntaxe : page[CRLF]
Exemples :
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice.pdf -pages:1,5,6,7,12 -toPDF
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice.pdf -pages:5-7 -toPDF
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice.pdf -pages:1,5-7,10-* -toPDF
map_xps -infile:/tmp/invoice.xps -outfile:/tmp/invoice.pdf -pages:FILE:/home/extern/pages.txt -toPDF
Concaténation de documents
Le principe est d’ajouter plusieurs documents les uns à la suite des autres. Le document de sortie est la concaténation de tous les fichiers précisés sur la ligne de commande dans l’ordre où ils ont été précisés. Deux commutateurs peuvent être utilisés : -add:xxx (=concaténation de plusieurs documents XPS en un XPS mono document) ou -adddoc:xxx (=concaténation de plusieurs documents XPS en un XPS multi documents avec conservation des options de finition de chaque document d’origine).
Remarque:
On peut ensuite imaginer un tri suivant des critères d’indexation préalablement définis sur chaque fichier pour faire du regroupement de fichiers de plusieurs sources différentes (facture + CGV + lettre d’information…)
Exemples :
Concaténation de plusieurs fichiers XPS en une seule fois :
map_xps -outfile:/tmp/final.xps -add:/tmp/test1.xps -add:/tmp/test2.xps -add:/tmp/test3.xps
Concaténation en plusieurs fois, dans le cas où l’on ne connait pas d’avance le nombre de fichiers XPS en entrée (généralement dans une boucle) :
map_xps -tempfile:/tmp/final.xps -add:/tmp/test1.xps
map_xps -tempfile:/tmp/final.xps -add:/tmp/test2.xps
map_xps -tempfile:/tmp/final.xps -add:/tmp/test3.xps