[pb XSL] forcer une impression en mode paysage

forcer une impression en mode paysage [pb XSL] - XML/XSL - Programmation

Marsh Posté le 24-09-2003 à 09:12:38    

Bonjour,
 
une collègue essaie, donc, de forcer l'impression d'une page en mode paysage. Sur un forum, elle a trouvé ça :
 
<script type="text/css" media="print">
//Impression en disposition paysage au lieu de portrait
div.pagepaysage {
 writing-mode: tb-rl;
 height: 80%;
 margin: 10% 0%;
}
</script>
 
à coller dans le <head> du .xsl en question.
 
visiblement ça ne fonctionne pas. quelqu'un a t'il déjà eu le problème et l'a résolu ?
 
mici ...  :jap:

Reply

Marsh Posté le 24-09-2003 à 09:12:38   

Reply

Marsh Posté le 24-09-2003 à 09:21:56    

Je ne pense pas qu'il y ait quelque chose de generique pour cela (l'aspect portrait/paysage est decidé par le driver de l'imprimante, et les commandes qu'on lui envoie, et je ne crois pas [mais là, un specialiste pourrait confirmer ou infirmes mes propos] que l'on puisse changer ça depuis un script dans la page recue).
Il y a peut etre des solutions propre a Windows, mais je doute qu'il y en aie des multi-OS.
 
Tiens c'est marrant, j'ai trouvé la page web du forum que ta collegue a utilisé ( http://www.devhood.com/messages/me [...] _id=101726 )
Ce qui est bizarre, c'est qu'ils disent que ca marche...
 
A+,


Message édité par gilou le 24-09-2003 à 09:28:16

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 24-09-2003 à 09:37:14    

bin ouais, j'ai retrouvé les pages en question; ce qui me semble assez futé c'est qu'en écrivant de haut en bas (au lieu de gauche à droite), cela outre-passe le paramétrage portrait paysage.

Reply

Marsh Posté le 24-09-2003 à 09:44:26    

En fait, si, je viens de tester l'exemple ( http://home.tampabay.rr.com/bmerke [...] -test.html )  et ca marche tres bien:
 
premiere page en portrait, 2e et 3e en paysage et derniere page en portrait a nouveau.
 
Mais ca depend apparement de la presence de page breaks en dur, si je lis bien. Ca peut peut etre s'adapter.
 
Le code de la page d'exemple est le suivant:
 

Code :
  1. <html>
  2. <head>
  3. <title>Print in Landscape</title>
  4. <link rel="shortcut icon" href="favicon.ico">
  5. <style type="text/css">
  6. body {margin: 2% 5%; background-color: linen}
  7. h2,h3,pre {color: Indigo}
  8. div.breakafter {page-break-after:always;
  9. color: silver}
  10. div.breakbefore {page-break-before:always;
  11. color: silver}
  12. </style>
  13. <style type="text/css" media="print">
  14. div.page  {
  15. writing-mode: tb-rl;
  16. height: 80%;
  17. margin: 10% 0%;
  18. }
  19. div.page table {
  20. margin-right: 80pt;
  21. filter: progid:DXImageTransform.Microsoft.BasicImage(Rotation=1);
  22. }
  23. </style>
  24. <meta http-equiv="Keywords"
  25.       content="CSS print landscape; print landscape; printing in landscape; landscape printing; Web page print orientation; landscape orientation; HTML page in landscape; print; writing-mode; print stylesheet; style sheets; CSS tips;" />
  26. </head>
  27. <body>
  28. <h2>Force Specific Content to Print in Landscape Orientation</h2>
  29. <p>This handy trick works in IE5.5/Win and newer. It assumes that the default printer orientation is portrait.</p>
  30. <p>Use the <code>writing-mode</code> property (submitted to W3C). A value meant for East Asian typography, <code>tb-rl</code>, causes IE to write text from top to bottom and right to left. Surround the content you want in landscape with a DIV with a class defined in a print stylesheet. For instance:
  31. </p>
  32. <pre>&lt;style type="text/css" media="print"&gt;
  33. div.page {
  34. writing-mode: tb-rl;
  35. height: 80%;
  36. margin: 10% 0%;
  37. }
  38. &lt;/style&gt;</pre>
  39. <p>Note that now CSS properties have a reverse sense. Height means width and top/bottom margins become left/right margins. </p>
  40. <p>Put a page break *after* a portrait page that is to be followed by a landscape and a page break *before* a portrait page that is preceded by a landscape. Tweak to your needs. <b>Caveat:</b> Data tables resist this hack. To get a table to flip nicely for print it is necessary to add another style rule&#151;which works only in IE6+. Please see the source for details. When once we practice to deceive, my, how the hacks unweave!
  41. </p>
  42. <div class="breakafter">Page break after here.</div>
  43. <div class="page">
  44. <h3>Second Page Should Be Printed in Landscape</h3>
  45. <p>Un peu de texte en exemple ici.</p>
  46. <p>Un peu de texte en exemple ici.</p>
  47. </div>
  48. <div class="page">
  49. <h3>Third Page Should Be in Landscape</h3>
  50. <p>Un peu de texte en exemple ici.</p>
  51. <p>Un peu de texte en exemple ici.</p>
  52. <!-- Use IE Conditional Comments to hide table from IE5.x -->
  53. <!--[if gte IE 6]>
  54. <table border="1" cellspacing="2" cellpadding="2" bordercolor="Purple">
  55. <tr>
  56.     <td>First Cell in first row</td>
  57.     <td>Second Cell</td>
  58.     <td>Third Cell in first row</td>
  59. </tr>
  60. <tr>
  61.     <td>First Cell in row 2</td>
  62.     <td>Second Cell</td>
  63.     <td>Third Cell in row 2</td>
  64. </tr>
  65. </table>
  66. <![endif]-->
  67. </div>
  68. <div class="breakbefore">Page break before here.</div>
  69. <h3>...and the last page should be back to portrait</h3>
  70. <p>Un peu de texte en exemple ici.</p>
  71. </body>
  72. </html>


 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 24-09-2003 à 10:44:48    

effectivement, il manque les break dans sa page xsl, il faut que je regarde où les rajouter ...
 
mici encore

Reply

Marsh Posté le 30-09-2003 à 12:36:17    

j'ai trouvé ça:
 
http://home.tampabay.rr.com/bmerke [...] -test.html
 
Vois si tu trouves ton Bonheur
 
A+
;)

Reply

Marsh Posté le 30-09-2003 à 20:35:56    

Ca t'arrive de lire ce qui est posté dans le topic?
Ton lien a ete donné depuis un bail...
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-10-2003 à 11:18:16    

alors, c'est clair, en html pur, ça marche bien. Par contre, dès que j'essaie de reporter le truc sur ma feuille xsl, ça ne marche plus. J'ai bidouillé un peu dans tous les sens mais rien n'y fait.
 
j'ai rajouté des conneries genre le titre et le menu haut avant et après les break pour bien visualiser les différentes mais ça ne marche pas et je me retrouve avec des titres superposés sur une page unique. Bref, je n'y comprend rien.
 
Si qqn a le courage de regarder dans mon code pour me dire là où je merde ...
 
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
 
<!-- default rule -->
<xsl:template match="/"><xsl:apply-templates/></xsl:template>
 
<!-- root rule -->
<xsl:template match="root">
<!-- Build the HTML page -->
<html>  
 
<head>
 <title>IntraCCF - Application ECLAIR</title>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" />
 <link rel="stylesheet" type="text/css" href="ccf.css" />
 <script src="scripts/source.js" type="text/javascript"></script>
 <script src="scripts/produit.js" type="text/javascript"></script>
 <script src="scripts/aideproduit.js" type="text/javascript"></script>
 
 <script type="text/css">  
 
 //test hugo
 div.breakafter {page-break-after:always;color: silver}
 div.breakbefore {page-break-before:always; color: silver}
        </script>
 
 
 <script type="text/css" media="print">
 //Impression en disposition paysage au lieu de portrait
 div.page  {  
  writing-mode: tb-rl;
  height: 80%;
  margin: 10% 0%;
  }
 
 div.page table {
  margin-right: 80pt;
  filter: progid:DXImageTransform.Microsoft.BasicImage(Rotation=1);
 }
 </script>

 
</head>    
 
 
 
<script type="text/javascript">
//Impression
 function printpage() {
//  browserVersion = parseInt(navigator.appVersion);
//  if (browserVersion >= 4) window.print();
  window.print();
 }
</script>
 
 
<body bgcolor="#FFFFFF" background="images/fondpage.gif" link="#FF0000" vlink="#FF0000" alink="#FF0000" >
 
<!-- Build the "Titre" layer -->
<div id="titre" style="position:absolute; width:596px; height:71px; z-index:3; left: 169px; top: 60px; visibility: visible">  
  ***********************
</div>
<!-- Build the "Titre" layer -->
<div id="titre" style="position:absolute; width:596px; height:71px; z-index:3; left: 169px; top: 120px; visibility: visible">  
  ********************
</div>
 
<div class="breakafter">Page break after here.</div>
 
<div class="page">
   
<!-- Build the "Menu" layer -->
<div id="menugauche" style="position:absolute; left:0px; top:56px; width:152px; height:471px; z-index:3; visibility: visible">  
  <table width="152" border="0" cellpadding="0" cellspacing="0">
    ******************
  </table>
</div>
 
<!-- Build the "Top" layer -->
<div id="menuhaut" style="position:absolute; left:0px; top:0px; width:765px; height:67px; z-index:2; background-color: #FFFFFF; layer-background-color: #FFFFFF; border: 1px none #000000; visibility: visible" class="boxrecherche">  
  <table border="0" cellpadding="0" cellspacing="0">
    ******************************
  </table>
</div>
             
<!-- Build the "Titre" layer -->
<div id="titre" style="position:absolute; width:596px; height:71px; z-index:3; left: 169px; top: 60px; visibility: visible">  
  *********************************
</div>
 
 
<xsl:choose>
 <xsl:when test="produit">
  <!-- Build the "PRODUIT ALLER" layer -->
  <xsl:apply-templates select="produit"/>
 </xsl:when>
 <xsl:when test="produitretour">
  <!-- Build the "PRODUIT RETOUR" layer -->
  <xsl:apply-templates select="produitretour"/>
 </xsl:when>
 <xsl:otherwise>
  <div id="noproduct" style="position:absolute; width:482px; height:61px; z-index:3; left: 189px; top: 162px" class="alphabet">
   <xsl:if test="listevide">
    <font face="Arial, Helvetica, sans-serif">PAS DE PRODUIT trouvé pour ce critère de recherche...</font>
    <br /><br />
   </xsl:if>
   <font face="Arial, Helvetica, sans-serif">Veuillez saisir ci-dessous le critère de recherche...</font>
  </div>
 </xsl:otherwise>
</xsl:choose>    
 
 
 
<!-- Build the "Recherche" layer -->
<xsl:apply-templates select="recherche"/>
 
<div id="menufluxaller" style="position:absolute; left:152px; top:96px; height:96px; z-index:4; visibility: hidden; width: 200px" onMouseOver="MM_showHideLayers('menufluxaller','','show')" onMouseOut="MM_showHideLayers('menufluxaller','','hide')">
  <table bgcolor="#EBEBEB" border="0" cellpadding="2" cellspacing="0" class="tab">
    ***********************************
  </table>
</div>        
 
 
<div id="menutfluxretour" style="position:absolute; left:152px; top:133px; height:100px; z-index:4; visibility: hidden; width: 200px" onMouseOver="MM_showHideLayers('menutfluxretour','','show')" onMouseOut="MM_showHideLayers('menutfluxretour','','hide')" class="newstitres">
  <table border="0" bgcolor="#EBEBEB" cellpadding="2" cellspacing="0" class="tab">
  ************************************
  </table>
</div>
 
<div id="menugestioncontrat" style="position:absolute; left:152px; top:170px; height:100px; z-index:4; visibility: hidden; width: 200px" onMouseOver="MM_showHideLayers('menugestioncontrat','','show')" onMouseOut="MM_showHideLayers('menugestioncontrat','','hide')">
  <table bgcolor="#EBEBEB" border="0" cellpadding="2" cellspacing="0" class="tab">
 ********************************
  </table>
</div>
 
<div id="menusuiviconnexions" style="position:absolute; left:152px; top:207px; height:46px; z-index:4; width: 200px; visibility: hidden" onMouseOver="MM_showHideLayers('menusuiviconnexions','','show')" onMouseOut="MM_showHideLayers('menusuiviconnexions','','hide')">  
  <table bgcolor="#EBEBEB" border="0" cellpadding="2" cellspacing="0" class="tab">
    ****************************
  </table>
</div>
<div id="menuadministration" style="position:absolute; left:152px; top:244px; height:61px; z-index:4; width: 200px; visibility: hidden" onMouseOver="MM_showHideLayers('menuadministration','','show')" onMouseOut="MM_showHideLayers('menuadministration','','hide')">  
  <table bgcolor="#EBEBEB" border="0" cellpadding="2" cellspacing="0" class="tab">
    **********************************
  </table>
</div>  
 
</div>
 
<div class="breakbefore"> Page break before here.</div>
<!-- Build the "Titre" layer -->
<div id="titre" style="position:absolute; width:596px; height:71px; z-index:3; left: 169px; top: 60px; visibility: visible">  
  ****************************
</div>
<!-- Build the "Titre" layer -->
<div id="titre" style="position:absolute; width:596px; height:71px; z-index:3; left: 169px; top: 120px; visibility: visible">  
  *****************************
</div>
 
</body>    
 
 
 
<script type="text/javascript">
opener=self;
document.rechercheform.idf.focus();
<xsl:if test="message">
 <xsl:apply-templates select="message" />  
</xsl:if>
</script>
 
</html>      
 
</xsl:template>
 
 
<xsl:template match="produit">
 <div id="product" style="position:absolute; width:596px; z-index:2; left: 169px; top: 133px; overflow: visible; height: 301px; visibility: visible" class="page">  
  <table width="596" bordercolor="#D2D2D2" bgcolor="#D2D2D2" cellpadding="4" cellspacing="0" border="5"  align="center">
   ********************************
  </table>
  <!-- Impression -->  
  <table width="596" cellpadding="0" cellspacing="0" height="32" align="center">
   <tr bordercolor="#FFFFFF">  
    <td bgcolor="#FFFFFF" align="right"><a href="javascript:void(0)" onClick="printpage()"><img src="images/illustprint.gif" width="47" height="36" border="0" alt="Imprimer" /></a></td>
   </tr>
  </table>
 </div>
</xsl:template>
 
<xsl:template match="produitretour">
 <div id="product" style="position:absolute; width:596px; z-index:2; left: 169px; top: 133px; overflow: visible; height: 301px; visibility: visible" class="page">  
  <table width="596" bordercolor="#D2D2D2" bgcolor="#D2D2D2" cellpadding="4" cellspacing="0" border="5"  align="center">
   ************************************
  </table>
  <!-- Impression -->  
  <table width="596" cellpadding="0" cellspacing="0" height="32" align="center">
   <tr bordercolor="#FFFFFF">  
    <td bgcolor="#FFFFFF" align="right"><a href="javascript:void(0)" onClick="printpage()"><img src="images/illustprint.gif" width="47" height="36" border="0" alt="Imprimer" /></a></td>
   </tr>
  </table>
 </div>
</xsl:template>
 
<xsl:template match="recherche">
<!-- Build the "Recherche" layer -->  
<!--form name="rechercheform" action="ConsulterProduit" method="post" id="rechercheform" onSubmit="MM_validateForm('rechercheform'); return document.MM_returnValue;"-->
<!--form name="rechercheform" action="adminprodmqt3b.xml" method="post" id="rechercheform"-->
<form name="rechercheform" method="post" id="rechercheform">
 ******************************************
</form>
</xsl:template>
 
<xsl:template match="message" >
 <![CDATA[alert("]]><xsl:value-of select="libmessage" /><![CDATA[" );]]>
</xsl:template>
 
</xsl:stylesheet>


Message édité par ptibonom le 01-10-2003 à 11:21:55
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed