Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
lettrehtml_pdf [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


lettrehtml_pdf

Warning: Undefined array key 3 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1453

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lettrehtml_pdf [2010/10/14 08:23]
tyrtamos créée
lettrehtml_pdf [2010/10/14 19:14]
tyrtamos
Ligne 115: Ligne 115:
 </code> </code>
  
 +===== Exemple =====
  
 +Et voilà un exemple de lettre html qui utilise le code ci-dessus:
  
 +<code python>
 +if __name__ == "__main__":
 +    
 +    # test
 +    html = r"""
 +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 +<html lang="fr">
 +<head>
 +  <meta content="text/html; charset=UTF-8"
 + http-equiv="content-type">
 +  <title></title>
 +</head>
 +<body style="direction: ltr;">
 +<br>
 +<br>
 +Manifestation<br>
 +<br>
 +<br>
 +<br>
 +<div style="position: absolute; margin-left: 5669px;">
 +{}<br>
 +{}<br>
 +{}<br>
 +{}<br>
 +</div>
 +<br>
 +<br>
 +<br>
 +<br>
 +<br>
 +<div style="position: absolute; margin-left: 1417px;">
 +<img width="300" height="300" src="xxx.jpg" alt="xxx.jpg" >
 +</div>
 +<br>
 +<br>
 +<br>
 +<br>
 +<br>
 +<br>
 +<br>
 +<table
 + border="1" cellpadding="2" cellspacing="2">
 +  <tbody>
 +    <tr>
 +      <td >machin</td>
 +      <td>toto</td>
 +      <td>truc</td>
 +      <td>bidule</td>
 +    </tr>
 +    <tr>
 +      <td></td>
 +      <td></td>
 +      <td></td>
 +      <td></td>
 +    </tr>
 +    <tr>
 +      <td></td>
 +      <td></td>
 +      <td></td>
 +      <td></td>
 +    </tr>
 +    <tr>
 +      <td></td>
 +      <td></td>
 +      <td></td>
 +      <td></td>
 +    </tr>
 +  </tbody>
 +</table>
 +<br>
 +<br>
 +<br>
 +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, <br>
 +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, <br>
 +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc, <br>
 +<br>
 +fin de la lettre<br>
 +<br>
 +</body>
 +</html>
 +    """.decode('utf-8').format(u"Nom prénom", u"rue xxx", u"cp ville", u"pays")
 +    
 +    lettre = Lettrepdf(html)
 +    lettre.imprimepdf()
 +    lettre.affichepdf()
 +</code>
  
 +Plusieurs remarques:
  
 +  * On a utilisé ici la méthode format pour intégrer dans le code html les données spécifiques à chaque lettre (ici l'adresse). Cela suppose d'une part que le code html n'a pas de '{}' au départ, et que l'on utilise Python v2.7. 
 +
 +  * Vous voyez qu'on peut ajouter d'autres lettres dans la chaine, à condition, bien sûr de générer un saut de page avec le code suivant:
 +
 +<code html>
 +<div style="page-break-before:always;"></div>
 +</code>
 +
 +Dans la construction de la chaine complète comportant toutes les lettres, il faudra donc:
 +
 +  * une entête, par exemple:
 +
 +<code html>
 +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 +<html lang="fr">
 +<head>
 +  <meta content="text/html; charset=UTF-8"
 + http-equiv="content-type">
 +  <title></title>
 +</head>
 +<body style="direction: ltr;">
 +<br>
 +</code>
 +
 +  * un bas de page, par exemple:
 +
 +<code html>
 +<br>
 +</body>
 +</html>
 +</code>
 +
 +  * et autant de lettres qu'on veut. Chaque lettre se continue sur la page suivante si le contenu dépasse la page. A la fin de chaque lettre, on place (à la main) un saut de page:
 +
 +<code html>
 +<div style="page-break-before:always;"></div>
 +</code>  
 +
 +  * Pour positionner avec précision l'adresse derrière la fenêtre transparent de l'enveloppe, on utilise le code suivant:
 +
 +<code html>
 +<div style="position: absolute; margin-left: 5669px;">
 +{}<br>
 +{}<br>
 +{}<br>
 +{}<br>
 +</div>
 +</code> 
 + 
 +Pour trouver le décalage de 5669 pixel, on a procédé comme suit:
 +
 +  * on mesure sur la lettre que l'adresse doit être, par exemple, à 14cm du bord de la page. Comme on a mis une marge de 2cm, il reste un décalage à faire de 12cm. Or, avec la valeur 'QtGui.QPrinter.HighResolution', la résolution de la page pdf est de 1200 dpi. On a donc: 120/25.4*1200=5669 pixels. 
 +
 +===== Méthode pour une seule lettre =====
 +
 +
 +===== Méthode pour plusieurs lettres =====
 +
 +
 +
 +
 +
 +
 + 
  
lettrehtml_pdf.txt · Dernière modification: 2010/10/14 19:14 de tyrtamos