1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| private class C_ImpressionDecoree implements Printable
{
private final PageFormat fmtZoneTablo;
private final Printable prtDelegataire;
final int l_logo_site, h_logo_site, l_logo_gemo, h_logo_gemo;
//CcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccC
public C_ImpressionDecoree( Printable prtDelegueTransmis ) {
prtDelegataire = prtDelegueTransmis;
l_logo_site = imgLogoSite.getWidth() * 72 / 600; // Adaptation 600DPI...
h_logo_site = imgLogoSite.getHeight() * 72 / 600; // ... en contexte 72DPI
l_logo_gemo = imgGemoConcept.getWidth() * 72 / 600;
h_logo_gemo = imgGemoConcept.getHeight() * 72 / 600;
fmtZoneTablo = new PageFormat();
}
//CcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccC
@Override
public int print( Graphics gContexte, PageFormat fmtPage, int index_page ) throws PrinterException {
Graphics2D g2D;
Paper infoPage;
int val_retour;
int x_pos, y_pos, h_texte;
// Détermination de la zone destinée à la table, compte tenu des logos situés en haut de page:
infoPage = new Paper();
if( fmtPage.getOrientation() == PageFormat.PORTRAIT )
{
infoPage.setSize( fmtPage.getWidth(), fmtPage.getHeight());
infoPage.setImageableArea( fmtPage.getImageableX(), fmtPage.getImageableY() + h_logo_site, fmtPage.getImageableWidth(), fmtPage.getImageableHeight() - h_logo_site );
}
else // Inversion des coordonnées
{
infoPage.setSize( fmtPage.getHeight(), fmtPage.getWidth());
infoPage.setImageableArea( fmtPage.getImageableY() + h_logo_site, fmtPage.getImageableX(), fmtPage.getImageableHeight() - h_logo_site, fmtPage.getImageableWidth());
}
fmtZoneTablo.setPaper( infoPage );
fmtZoneTablo.setOrientation( fmtPage.getOrientation());
g2D = (Graphics2D)gContexte.create();
val_retour = prtDelegataire.print( g2D, fmtZoneTablo, index_page ); // !! LE PROBLEME EST ICI !!
// val_retour = prtDelegataire.print( g2D, fmtPage, index_page ); // !! LE PROBLEME N'EXISTE PAS ICI !!
if( val_retour == NO_SUCH_PAGE )
{
g2D.dispose();
return val_retour; // Plus rien à imprimer
}
// Arrivé ici signifie que la table est imprimée, on rajoute la décoration:
g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
g2D.setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON );
g2D.setRenderingHint( RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
g2D.setRenderingHint( RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC );
// Logo du club, en haut à gauche:
x_pos = 1 + (int)fmtPage.getImageableX(); // Tient compte de l'orientation
y_pos = 1 + (int)fmtPage.getImageableY();
g2D.drawImage( imgLogoSite, x_pos, y_pos, l_logo_site, h_logo_site, null );
// Lignes éventuelles dans l'en-tête
g2D.setFont( policeNormale );
h_texte = (int)g2D.getFontMetrics().getStringBounds( "H", g2D ).getHeight(); // Pour connaître la hauteur d'une ligne
if( sLigne1 != null )
g2D.drawString( sLigne1, x_pos + l_logo_site + 10, y_pos + h_texte );
if( sLigne2 != null )
g2D.drawString( sLigne2, x_pos + l_logo_site + 10, y_pos + h_texte + h_texte + 1 );
if( sLigne3 != null )
g2D.drawString( sLigne3, x_pos + l_logo_site + 10, y_pos + h_texte + h_texte + h_texte + 2 );
// Logo GémoConcept, en haut à droite:
x_pos = 1 + (int)( fmtPage.getImageableX() + fmtPage.getImageableWidth() - l_logo_gemo );
y_pos = 1 + (int)( fmtPage.getImageableY());
g2D.drawImage( imgGemoConcept, x_pos, y_pos, l_logo_gemo, h_logo_gemo, null );
// Rectangle de signature
if( signature )
{
g2D.drawRect( x_pos - 160, y_pos, 150, h_logo_site );
g2D.setFont( policeLabel );
h_texte = (int)g2D.getFontMetrics().getStringBounds( "H", g2D ).getHeight(); // Pour connaître la hauteur d'une ligne
g2D.drawString( "Signature:", x_pos - 155, y_pos + h_texte + 1 );
}
g2D.dispose();
return PAGE_EXISTS;
}
} |
Partager