Mise en forme de la description dans un model ODT

Bonjour,

J’utilise un model perso pour mes propositions commerciales (3.9.3)

pour afficher la description j’utilise :

[!-- BEGIN lines --]
{line_product_label}
{line_desc}
Prix : {line_price_ttc}€
[!-- END lines --]

Le soucis c’est que la description de mon produit est une liste à puce. Elle s’affiche correctement dans Dolibarr mais dans le document ODT la mise en forme n’apparait pas. J’ai essayé de créer un tableau dans la description de mon produit avec une puce par ligne du tableau mais cela ne fonctionne pas plus.

Y-a-t-il un moyen de remedier à ce problême .?

Et tant que j’y suis, y-a-t-il un tag pour afficher la photo produit ?

Merci d’avance

Persdonne n’a une petite piste à proposer ?

Bonjour altho,

Je profite de votre post pour exposer ma problématique qui est la même que la vôtre, à savoir : la mise en forme d’un descriptif article non prise en compte dans les éditions ODT. De la même façon, nous utilisons des listes à puces dans le descriptif de nos articles.
Peut-être avez-vous obtenu une solution depuis ce post.

Pour tester la problématique de bout en bout, j’ai créé un produit test contenant un descriptif avec des puces (numérotées ou non), du gras, de l’italique, différentes tailles de police, retours-charriots etc … (cf PJ : 160929_screenshot_article_dolib)

160929_screenshot_article_dolib.png

Lorsque je consulte la source HTML de la description article, l’ensemble des balises de mise en forme apparaissent bien (cf PJ : 160929_code_source_article_test)

160929_code_source_article_test.png

A l’impression au format PDF, tout est ok concernant la mise en forme de mon descriptif article : cela apparaît tel que je l’ai créé dans mon article dans Dolibarr (cf PJ : 160929_test_print_pdf)

160929_test_print_pdf.png

Cela se gâte au moment de l’impression au format ODT : hormis la balise de retour charriot (<br> </br>) aucune autre balise ne semble être prise en compte (cf PJ : 160929_test_print_odt)

160929_test_print_odt.png

Dois-je en conclure que le format d’impression ODT n’est pas adapté pour la mise en forme des descriptifs articles ?
Et par voie de conséquence, que le format PDF est le seul format adapté à ce que l’on souhaite faire ?

Merci par avance de votre retour

Bonjour,

Un petit up concernant la problématique ci-dessus ; j’aurais besoin de trancher sur le fait que nous devons opter pour une édition de nos documents commerciaux directement au format PDF, si le format ODT n’est pas adapté à nos contraintes (mise en forme des descriptifs articles à reprendre dans les documents).

Merci

Bonjour
J’up ce post, car la problématique m’a été posée.
Effectivement lorsqu’on choisit un modèle de facturation via un fichier ODT, la description des lignes des produits n’est pas mise en forme. C’est dû à une caractéristique des fichiers ODT dont la création est assez archaïque (c’est seulement mon avis).
Il faudrait savoir si avec l’implantation d’une Lib html2odt, le besoin serait comblé.

Je note ici des pistes :


https://github.com/cybermonde/odtphp ou https://github.com/socianova/php2odt

Néanmoins, il est toujours possible d’avoir une amélioration du code actuel pour garder un visuel sur ODT proche du visuel HTML.

Il faudrait compléter mes ajouts, mais voici un exemple pour le saut de ligne, l’italique, le gras et le souligné. Les listes à puces peuvent être également intégrées ainsi qu’une certaine gestion de texte en couleur.

Il faut remplacer les fonctions « htmlToUTFAndPreOdf » et « preOdfToOdf » dans le fichier « odf.php » présent à l’emplacement « /htdocs/includes/odtphp/ ».

	/**
	 * Function to convert a HTML string into an ODT string
	 *
	 * @param	string	$value	String to convert
	 */
	public function htmlToUTFAndPreOdf($value)	{
		// We decode into utf8, entities
		$value=dol_html_entity_decode($value, ENT_QUOTES);
		// We convert html tags
		$ishtml=dol_textishtml($value);
		if ($ishtml)
		{
			$value=preg_replace('/<br \/>/i',"__n__",$value);
			$value=preg_replace('/<strong>/','__g__',$value);
			$value=preg_replace('/<\/strong>/','__g2__',$value);
			//$value=preg_replace('/<span[^>]+>/','<text:span>',$value);
			//$value=preg_replace('/<\/span>/','</text:span>',$value);
			$value=preg_replace('/<em>/','__i__',$value);
			$value=preg_replace('/<\/em>/','__i2__',$value);
			$value=preg_replace('/<u>/','__u__',$value);
			$value=preg_replace('/<\/u>/','__u2__',$value);
			$value=dol_string_nohtmltag($value, 0);
		}
		return $value;
	}


	/**
	 * Function to convert a HTML string into an ODT string
	 *
	 * @param	string	$value	String to convert
	 */
	public function preOdfToOdf($value)	{
		$value = str_replace('__n__', '<text:line-break/>', $value);
		$value = str_replace('__g__','<text:span text:style-name="bold">',$value);
		$value = str_replace('__g2__','</text:span>',$value);
		$value = str_replace('__u__','<text:span text:style-name="underline">',$value);
		$value = str_replace('__u2__','</text:span>',$value);
		$value = str_replace('__i__','<text:span text:style-name="italic">',$value);
		$value = str_replace('__i2__','</text:span>',$value);
		return $value;
	}

Il faut ensuite éditer le fichier « content.xml » présent dans l’archive ODT (ouvrir le modèle ODT avec WinZip, 7 Zip, etc.) ; pour y placer
entre office:automatic-styles\ et </office:automatic-styles> le code suivant :

<style:style style:name="strong" style:family="text"><style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/></style:style><style:style style:name="italic" style:family="text"><style:text-properties fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"/></style:style><style:style style:name="underline" style:family="text"><style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color"/></style:style>

Il faut faire ça pour chaque modèle ODT qui servira à générer un document.
À compléter au besoin… Normalement ça fonctionne correctement !

NB (Memo futur): Mettre une condition pour une option type « ODT_FORMAT_DESC » dans le code pour activer ou non le formatage.

salut a tous

j’ai la v 9 de Dolibarr et j’ai consultée des postes mai je n’y arrive pas ou comprend pas comment réalisée une mise ne forme des TAGS

exemple:

{object_total_ht} en gras ou rouge ou même plus grand…

et autre chose aussi, est il possible de réalisée des formules mathématique avec des tags ?

exemple qui divise en 2 le total:

{object_total_ht} / 2

qui me donnera : Acompte de xx.xx€ et xx.xx€ a la livraison

merci de votre aide

Tout se fait dans le fichier ODT (via LibreOffice).
MP moi pour échanger si tu veux, la mise en forme via modèle ODT n’a rien de simple ni de complet contrairement à la mise en forme PDF.
À ma connaissance, impossible de faire ce que tu souhaites pour l’acompte. Ce n’est de toute façon pas conseillé pour le suivi des créances.