Post by Thierry HouxPost by Thierry HouxBonjour à tous,
Ce rapport permet de tracer un arbre généalogique très lisible;
toutefois l'index qu'il produit (pour le format A4 au moins) place le
texte en tout haut de page et cause problème à l'impression (en partie
tronqué).
Je n'arrive pas à trouver où il faut jouer pour corriger ce défaut; si
quelqu'un a déjà traité ce problème, je serais preneur de sa manip.
Par avance merci,
Cordialement.
Editer le fichier ps-pedi.ps
Rechercher: /indexpagesetup
remplacer la ligne: xoffset inch yoffset inch translate
par: xoffset inch yoffset -0.5 inch translate
Par contre il reste un problème: Mon fichier Gedcom est en UTF-8 (généré
par Gramps). Le programme ps-pedigree-pt.ll génère donc un fichier
ISO-8859-15 avec des données en UTF-8 (C'est un casse-tête ces
iconv -f UTF8 -t ISO8859-15 fichier.ps > iso-fichier.ps
Je n'ai plus de problème d'accents, mais les espacements dans l'index ne
sont plus bons, un caractère UTF-8 occupant 2 octets là ou en 8859-15 on
n'en utilise qu'un.
Si quelqu'un a une idée?
Cordialement.
Je me re-répond, vu le désert ...
En résumé:
- Le Gedcom importé est en UTF-8
- Le rapport ps-pedigree-pt.ll génère de l'ISO-8859-15 et y met des
données contenant de l'UTF-8 (beau mélange!).
- Le traitement iconv permet d'avoir un fichier bien traduit, mais un
mauvais espacement dans l'index.
- Les outils standards ne permettent pas d'aller plus loin (à ma
connaissance)
La solution: Ecrire un script qui permette de corriger ça.
Le choix du langage: Python (celui de Gramps).
Bon, ma programmation, c'est du bricolage étant donné que c'est mon
premier programme dans ce langage. En tous cas ça marche.
Voilà le script:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#
# Nom: traduc.py
# Role: Traduire fichier source UTF-8 postscript en iso-8859-15
# pour ps-pedigree-pt.ll avec respect des espacements dans
# l'index, ce qui n'est pas obtenu par la simple conversion
# avec l'outil iconv
# Rev: 12/03/2015: Creation, Thierry Houx
#
#
# Recuperer parametres fourni au lancement du programme
import sys
nomfic = sys.argv[1]
# Definition variables
refindex = 'mark indexpagesetup 1 pagesetup'
index = 0
empespace = 67
# Ouverture fichier source
fichierutf = open(nomfic,'r')
# Ouverture fichier destination
fichiersortie = "iso-"+nomfic
fichieriso = open(fichiersortie,'w')
# Lecture fichier source et conversion jusqu'a l'index
NbLigne = 0
while 1:
# Lecture ligne brute du fichier en UTF-8
ligne=fichierutf.readline()
# Décodage UTF-8
sortie= ligne.decode('utf8')
# Encodage ISO-8859-15 de la chaine sortie
ligneiso = sortie.encode('iso-8859-15')
# La ligne lue est-elle le debut de l'index ?
if refindex in ligne:
index = 1
# Notre index étant trouvé, traitement des lignes suivantes
if index == 1:
# Déterminer la longueur de la chaine d'origine
longutf=len(ligne)
# Déterminer la longueur de la nouvelle chaine
newlong = len(ligneiso)
if newlong < longutf:
place = 0
# Tester si la ligne concerne un homme
place = ligneiso.find(' H ')
# Pas un homme, il faut re-tester
if place == -1:
place = ligneiso.find(' F ')
# Si le champs de la ligne n'est pas a sa
# place, il faut corriger.
if place <> 66:
# couper la chaine en 2 pour inserer espaces
gauche = ligneiso[0:place]
droite = ligneiso[place:len(ligneiso)]
# Nombre d'espaces a ajouter
n = 66 - place
for i in range(n):
gauche = gauche+" "
ligneiso = gauche+droite
longueur = len(ligne)
NbLigne += 1
if ligne =='':break
# Ecriture ligne convertie dans fichier destination
fichieriso.write(ligneiso)
# Fin des operations, on clos les fichiers
fichierutf.close()
fichieriso.close()
# On quitte le programme
sys.exit(0)
Voilà, en espérant que ça puisse aider.
Cordialement.
--
Thierry Houx (***@free.fr)
Météo Fontaine le Dun: http://thierry.houx.free.fr/meteoWEB
Webmestre du site http://www.geneacaux.org/
Membre CGPCSM N°72-2576