Genération de documents

Répondre
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

mar. juin 27, 2017 4:32 pm

Bonjour,

Je suis en train de plancher sur un module qui me permet d'insérer automatiquement un QRCode sur mes documents commerciaux, en l'occurence pour l'instant, il s'agit d'insérer un QRCode de type "carte de visite", donc celui-ci serais généré en fonction du champ COMMERCIAL mais je vois pas vraiment comment faire à l'aide d'un module en fouillant dans les sources, hormis peut être un SpreadSheetGeneratorListener maisça me donnerais pas accès à la génération à proprement dite.

Je compte utiliser la librairie ZXing qui me parait vraiment pas mal du tout.
Pouvez vous me confirmer la faisabilité par le biais d'un module ??

La solution de secours consiste à l'insérer directement dans le template mais celui-ci serais figé...

Merci.
ludovic
Messages : 265
Enregistré le : ven. avr. 15, 2011 2:32 pm

mer. juin 28, 2017 7:24 am

Bonjour,

Créez une classe qui étend SpreadSheetCellValueProvider et enregistrez la dans la méthode start de votre module (SpreadSheetCellValueProviderManager.put("string.ref.pour.XML", new votreClasse());

Cordialement,
Ludovic.
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

mer. juin 28, 2017 11:19 am

Bonjour Ludovic,

Merci pour votre aide, j'arrive à générer un objet test dans la cellule concernée, cependant je n'arrive pas à voir quel type d'objet est attendu pour insérer une image dans le fichier ods, j'ai testé avec un InputStream, une JImage, ... et à chaque fois l'objet est casté en string. En regardant d'un peu plus près la classe MutableCell, il apparait que seul une string peut être insérée...
Pourtant une fonction setImage() est bien disponible mais je ne vois pas comment y accéder à partir d'un SpreadSheetCellValueProvider, même quand je retourne un File dans getValue() ça m'insère le path...
Rien non plus dans les type de champs ou d'élement pouvant indiquer une image.

Merci.
ludovic
Messages : 265
Enregistré le : ven. avr. 15, 2011 2:32 pm

mer. juin 28, 2017 8:22 pm

Essayez de modifier la méthode setCellValue de la class OOGenerationXML dans le projet OpenConcerto, remplacez le
else {
cell.setValue(value);

}

par
else if (value instance of File){
cell.setImage((File)value);
}else {
cell.setValue(value);

}

Je n'ai pas le temps de testé cette semaine, merci de me tenir au courant de vos tests. Nous intégrerons cette modification dans OpenConcerto si cela fonctionne.

Cordialement,
Ludovic.
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

jeu. juin 29, 2017 7:28 pm

Bonsoir Ludovic,

Avec cette modification il prend bien le fichier mais je me retrouve avec une erreur:

Code : Tout sélectionner

this cell doesn't contain an image: <table:table-cell xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" />
, en fouillant dans les sources il apparaît que setImage() attend un élément draw avec un child frame et un autre child image, en les mettant j'ai toujours une erreur.

Visiblement le problème est maintenant dans le fichier xml.
Je regarde ça demain pour voir si je trouve la solution.
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

ven. juin 30, 2017 3:15 pm

En ajoutant sous OpenOffice une image "placeholder" dans la cellule en question ça fonctionne mais pas moyen de l'indiquer dans le fichier xml (en tout cas je trouve toujours pas).
De plus l'image placeholder doit être dimensionnée correctement parceque l'image est générée sur la frame de cette image, pour garder le bon ratio, j'ai remplacer votre appel à setImage() par celui ci-dessous en spécifiant le respect du ratio.

Code : Tout sélectionner

cell.setImage((File)value, true);
Avatar du membre
guillaume
Messages : 2430
Enregistré le : ven. févr. 11, 2011 7:15 pm

sam. juil. 01, 2017 4:15 pm

Bonjour,

La solution actuelle n'est pas évidente à gérer car le xml ne dispose pas encore du support des images,
et côté jOpenDocument, on a de quoi remplacer une image mais pas de quoi en ajouter une en spécifiant position et taille.
Bref, il y a encore du boulot!

Cordialement,
Directeur technique d'OpenConcerto qui dans son temps libre s'occupe du forum.
Pour une assistance pro, nous sommes joignables à ILM Informatique contre quelques jetons.
Pensez aussi à lire le manuel !
doc
Messages : 187
Enregistré le : dim. févr. 26, 2017 4:39 pm

sam. juil. 01, 2017 4:26 pm

Bonjour Guillaume,

C'est ce que j'ai vu justement, au départ j'ai pensé ajouter une image si on en trouvait pas mais rien pour le faire...
Je me suis donc rabattu sur une solution qui je penses fait l'affaire, solution pas trop handicapante qui consiste à ajouter manuellement une image "placeholder" dans la cellule en question et travailler dessus à partir du module, j'ai qqchose qui fonctionne bien pour le moment, juste une petite modification à effectuer au niveau d'OC et mon module sera opérationnel.

Modification a apporter:

Modifier la condition dans la méthode setCellValue() de la class OOGenerationXML:

Code : Tout sélectionner

else {
    cell.setValue(value);
}
par

Code : Tout sélectionner

} else if (value instance of File){
    cell.setImage((File)value, true);
} else {
    cell.setValue(value);
}
Si vous apportez cette modification sur la 1.5, je pourrais mettre le module à dispo de la communauté.
Avatar du membre
guillaume
Messages : 2430
Enregistré le : ven. févr. 11, 2011 7:15 pm

sam. juil. 01, 2017 10:11 pm

Bonjour,

Vu que la 1.5 est sortie, je vous propose de peaufiner votre module et nous regarderons pour intégrer le plus de chose possible dans OpenConcerto lui même afin de simplifier le code des modules qui voudraient faire la même chose.

D'expérience, la 1.5.1 ne sortira pas dans trop longtemps car tout le monde va se jeter sur la 1.5 et remonter quelques "commentaires" :)

Cordialement,
Directeur technique d'OpenConcerto qui dans son temps libre s'occupe du forum.
Pour une assistance pro, nous sommes joignables à ILM Informatique contre quelques jetons.
Pensez aussi à lire le manuel !
Répondre