IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Ajouter un logo dans l'entête de print JTable


Sujet :

AWT/Swing Java

  1. #21
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fideel Voir le message
    .je l'ai supprimés maintenant toujours il y a une grande marge en dessus de mes logos..
    Ça, c'est normal, pour la hauteur du header, tu as mis 2 fois la hauteur de l'image de gauche ! getHeight() doit retourner la hauteur du header.

    Si tu veux pouvoir gérer des marges autour de la table, tu peux utiliser cette version :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    public class TablePrinter implements Printable {
     
    	private JTable table;
    	private HeadBandPrintable header;
    	private HeadBandPrintable footer;
    	private Printable tablePrintable;
    	private PrintMode printMode;
    	private int lastPage;
    	private Insets tableInsets;
     
    	public TablePrinter(JTable table, PrintMode printMode, HeadBandPrintable header, HeadBandPrintable footer) {
    		this(table, printMode, header, footer, null);
    	}
     
    	public TablePrinter(JTable table, PrintMode printMode, HeadBandPrintable header, HeadBandPrintable footer, int marginh, int marginv) {
    		this(table, printMode, header, footer, new Insets(marginv, marginh, marginv, marginh));
    	}
     
    	public TablePrinter(JTable table, PrintMode printMode, HeadBandPrintable header, HeadBandPrintable footer, Insets tableInsets) {
    		this.table=table;
    		this.header=header;
    		this.footer=footer;
    		this.printMode=printMode;
    		this.tableInsets=tableInsets==null?new Insets(0,0,0,0):tableInsets;
    	}
     
    	public void reset() {
    		tablePrintable=null;
    	}
     
    	public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
     
    		if ( tablePrintable==null || pageIndex<lastPage) {
    			tablePrintable = this.table.getPrintable(printMode, null, null);
    		}
     
    		double headerHeight;
    		if ( header!=null ) {
    			headerHeight = Math.max(0, header.getHeight());
    		}
    		else {
    			headerHeight = 0;
    		}
     
    		double footerHeight;
    		if ( footer!=null ) {
    			footerHeight = Math.max(0, footer.getHeight());
    		}
    		else {
    			footerHeight = 0;
    		}
     
    		PageFormat tablePageFormat;
    		if ( headerHeight!=0 || footerHeight!=0 || tableInsets.top!=0 || tableInsets.bottom!=0 || tableInsets.left!=0 || tableInsets.right!=0 ) {
     
    			tablePageFormat = new HeaderFooterPageFormat(pageFormat, headerHeight, footerHeight, tableInsets); 
     
    		}
    		else {
    			tablePageFormat = pageFormat;
    		}
     
    		int page = tablePrintable.print(graphics, tablePageFormat, pageIndex);
    		if (page==Printable.PAGE_EXISTS) {
    			if ( header!=null ) {
    				HeaderFooterPageFormat headerPageFormat = new HeaderFooterPageFormat(pageFormat, 0, tablePageFormat.getImageableHeight()+footerHeight+tableInsets.top+tableInsets.bottom,null); 
    				header.print(graphics, headerPageFormat, pageIndex);
    			}
    			if ( footer!=null ) {
    				HeaderFooterPageFormat footerPageFormat = new HeaderFooterPageFormat(pageFormat, tablePageFormat.getImageableHeight()+headerHeight+tableInsets.top+tableInsets.bottom, 0,null); 
    				footer.print(graphics, footerPageFormat, pageIndex);
    			}
    		}
    		return page;
     
    	}
     
    	private static class HeaderFooterPageFormat extends PageFormat {
     
    		private PageFormat pageFormat;
    		private double headerHeight;
    		private double footerHeight;
    		private Rectangle2D.Double imageable;
    		private Insets insets;
    		private boolean withInsets; 
     
    		public HeaderFooterPageFormat(PageFormat pageFormat, double headerHeight, double footerHeight, Insets insets) throws PrinterException {
    			this.pageFormat = pageFormat;
    			this.headerHeight = headerHeight;
    			this.footerHeight = footerHeight;
    			this.insets = insets==null?new Insets(0,0,0,0):insets;
    			this.withInsets = insets!=null;
    			computeImageable();
     
    		}
     
    		private void computeImageable() throws PrinterException {
    			double height = this.pageFormat.getImageableHeight()-headerHeight-footerHeight-insets.top-insets.bottom;
    			double width = this.pageFormat.getImageableWidth()-insets.left-insets.right;
    			if (height<0 || width<0 ) {
    				throw new PrinterException("Not enough space to print - format: " + this.pageFormat.getImageableHeight() + " - header: " + headerHeight + " - footer: " + footerHeight + (withInsets?(" margins: " + insets):""));
    			}
    			imageable = new Rectangle2D.Double(pageFormat.getImageableX()+insets.left, 
    					pageFormat.getImageableY()+headerHeight+insets.top, pageFormat.getImageableWidth()-insets.left-insets.right, height);
    		} 
     
    		@Override
    		public double getHeight() {
    			return pageFormat.getHeight();
    		}
     
    		@Override
    		public double getWidth() { 
    			return pageFormat.getWidth();
    		}
     
    		@Override
    		public Paper getPaper() { 
    			return pageFormat.getPaper();
    		}
     
    		@Override
    		public int getOrientation() { 
    			return pageFormat.getOrientation();
    		}
     
    		@Override
    		public double[] getMatrix() { 
    			return pageFormat.getMatrix();
    		}
     
    		@Override
    		public double getImageableX() {
    			return imageable.getX();
    		}
     
    		@Override
    		public double getImageableWidth() { 
    			return imageable.getWidth();
    		}
     
    		@Override
    		public double getImageableY() {
    			return imageable.getY();
    		}
     
    		@Override
    		public double getImageableHeight() {
    			return imageable.getHeight();
    		}
     
    		@Override
    		public void setOrientation(int orientation) throws IllegalArgumentException {
    			pageFormat.setOrientation(orientation);
    			try {
    				computeImageable();
    			} catch (PrinterException e) {
    				throw new RuntimeException(e);
    			}
    		}
     
    		@Override
    		public void setPaper(Paper paper) {
    			pageFormat.setPaper(paper);
    			try {
    				computeImageable();
    			} catch (PrinterException e) {
    				throw new RuntimeException(e);
    			}
    		}
     
    		public PageFormat getPageFormat() {
    			return pageFormat;
    		}
     
    	} 
     
    	public static interface HeadBandPrintable extends Printable {
     
    		double getHeight();
     
    		int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
                    throws PrinterException;
     
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  2. #22
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fideel Voir le message
    lorsque j'imprime avec les nouvelles valeurs que j'ai ajouté au coordonnées que ce soit dans

    computepage()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void computeImageable() throws PrinterException {
    	double height = this.pageFormat.getImageableHeight()-headerHeight-footerHeight;
    	if (height<0 ) {
    	throw new PrinterException("Not enough space to print - format: " + this.pageFormat.getImageableHeight() 
                    + " - header: " + headerHeight + " - footer: " + footerHeight );
            }
    	imageable = new Rectangle2D.Double(pageFormat.getImageableX()+50, pageFormat.getImageableY()
                    +headerHeight+5, pageFormat.getImageableWidth()-100, height-20);
    		}
    ça c'est du bidouillage, pour ne pas dire du merdouillage. Si tu regardes bien, le HeaderFooterPageFormat est utilisé pour imprimer la table, le header et le footer (et le nom de la classe n'est pas sans lien avec ça) !
    Non seulement ça a des effets de bord, mais tu les contres avec des trucs absurdes comme afficher le logo de gauche en -30 !!!
    Avec la nouveau TablePrinter que je t'ai donné dans le message précédent, tu peux ajouter une marge autour de la table, sans bidouiller. Et si tu as besoin de marges dans les header ou footer, bah tu décales les draw et tu ajoutes de la hauteur dans getHeight() en correspondance, pour qu'il y ait la place.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #23
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    j'ai implémenté la nouvelle version tablePrinter().
    j'ai rien touché..j'ai aussi réinitialisé les coordonnées su header et footer..
    résultat:
    Nom : Sans titre.png
Affichages : 140
Taille : 11,7 Ko

  4. #24
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    les marges supplémentaires qui me dérange et grâce à eux Nous ne voyons pas le même problème.
    je crois qu'ils sont ajoutés dans le paper de la prés visualisation..parce que après l'impression y a pas ces marges supplémentaires..

    impression:

    Nom : Sans titre1.png
Affichages : 143
Taille : 32,1 Ko

    prés visualisation:

    Nom : Sans titre.png
Affichages : 142
Taille : 11,7 Ko

  5. #25
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fideel Voir le message
    j'ai implémenté la nouvelle version tablePrinter().
    j'ai rien touché..j'ai aussi réinitialisé les coordonnées su header et footer..
    Et ? Donc ? Si la question non énoncée, c'est qu'il n'y a pas de marge entre le header et la table, c'est parce que tu n'en as pas mise, Et si le titre s'affiche par dessus la table, c'est parce que c'est ce que fait le code (du header).


    Essaye comme ça puis ajuste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
            header = new HeadBandPrintable() {
                BufferedImage imageg = ImageIO.read(getClass().getResource("../icones/logog1.png"));
                BufferedImage imaged = ImageIO.read(getClass().getResource("../icones/logod1.png"));
     
                @Override
    			public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { 
     
                		// le logo à gauche
                	    double xg = pageFormat.getImageableX() + 20; // on se laisse une marge à gauche de 20
                	    double yg = pageFormat.getImageableY() + 10; // une marge en haut de 10
                	    double imagegBottom = yg + imageg.getHeight(); // le bas de l'image
    		            graphics.drawImage(imageg, (int)xg, (int)yg, null); 
     
    		            // le logo à droite
                	    double xd = pageFormat.getImageableX() + pageFormat.getImageableWidth() - 20/*marge gauche*/ - 20/*marge droite*/ - imaged.getWidth() ; // une marge à droite en plus à 20
                	    double yd = pageFormat.getImageableY() + 7; // une marge en haut de 7 (pourquoi pas 10 ?)
                	    double imagedBottom = yd + imaged.getHeight() ;  // le base de l'image
    		            graphics.drawImage(imaged, (int)xd, (int)yd, null); 
     
    		            // le texte : on veut qu'il soit affiché en dessous des images (de ce que j'ai compris de ce que tu voulais faire)
     
    		            double textTop = Math.max( imagedBottom, imagegBottom ) + 20; // 20 un espace entre images et texte
    		            double textHeight = 20; // une taille qu'on se donne pour les textes (en rapport avec la taille de la police)
    		            double textLeft = xg+imageg.getWidth(); // ici pas vraiment besoin de gérer une marge, le texte étant centré
    		            double textWidth = xd - textLeft; 
     
    		            graphics.setFont(Font.decode("Arial-BOLD-20")); 
    		            TextUtils.drawString(graphics, headerField.getText(), 
    		            		new Rectangle2D.Double(textLeft, textTop, textWidth, textHeight)), SwingConstants.CENTER, SwingConstants.CENTER);
    		            return Printable.NO_SUCH_PAGE;
     
    			}
     
    			@Override
    			public double getHeight() {
    				double heightGauche = 10 + imageg.getHeight();
    				double heightDroite = 7 + imageg.getHeight();
    				double height = Math.max(heightGauche, heightDroite);
    				height+=20; // espace entre texte et image
    				height+=20; // la hauteur du texte
    				height+=20; // on se rajoute encore de la marge pour que la table soit pas collée
    		        return height;
    			}
     
     
    	}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #26
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fideel Voir le message
    je crois qu'ils sont ajoutés dans le paper de la prés visualisation..parce que après l'impression y a pas ces marges supplémentaires..
    ça c'est probablement dans la manière de déterminer le paper. A priori, le souci, doit être qu'on n'affiche pas la preview après choix dans un printDialog, mais avant, donc le format n'est pas spécifiquement celui d'un PrintService particulier. Le dialogue de prévisualisation doit être affiché après le choix de la destination et du paramétrage des marges, et après, on ne doit plus afficher de dialogue (sur le bouton print dans la prévisu).

    En clair, le souci vient de là : pp_pf = prnJob.defaultPage();. On utilise le format par défaut pour la preview. Alors qu'on devrait utiliser le même que pour l'impression.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #27
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    c'est bon pour les le titre et la table.
    maintenant regarde ici la prés visualisation:

    Nom : Sans titre.png
Affichages : 140
Taille : 10,0 Ko

    et ici l’impression :

    Nom : Sans titre1.png
Affichages : 153
Taille : 28,0 Ko

  8. #28
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    En clair, le souci vient de là : pp_pf = prnJob.defaultPage();. On utilise le format par défaut pour la preview. Alors qu'on devrait utiliser le même que pour l'impression.
    voilà maintenant on est sur le même souci.

  9. #29
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Oui, mais, ça c'est ce que je t'ai dit dans mon précédent message : c'est dû au fait que l'impression et la preview ne sont pas fait avec le même format (parce que l'impression n'est pas faite avec le defaultPage()).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #30
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    et comment faire pour régler ça. c'est mieux de toucher la preview pour pouvoir régler les marges facilement..

    et merci beaucoup beaucoup de ton effort..

  11. #31
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    j'ai mis l'impression en défautpage().. les logos sont plus bas..

  12. #32
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Le plus simple, c'est de prendre la defaultPage() (sur le job, comme tu fais). Et pour imprimer, tu utilises le format que tu utilises pour la preview, celui qui est dans pp_pf : au lieu de job.setPrintable(printable), tu utilises job.setPrintable(printable, pp_pf) au moment d'imprimer, mais de ne plus afficher le printDialog ou le pageDialog à ce moment (parce qu'on peut y changer le format). Ce qui veut dire qu'il faudrait le faire avant d'afficher la preview, pour pouvoir choisir l'imprimante au moins et donc récupérer le format après l'affichage du dialogue (printDialog et/ou pageDialog). Ou de refaire cette partie dans le dialogue de preview, avec une combo (voir PrintServiceLookup.lookupPrintServices(null,null) pour la liste et job.setPrintService(ps)).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #33
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    salut..

    j'ai fait comme tu m'as dit: job.setPrintable(printable, pp_pf) . ça marche.. mais la marges en haut de page ,en dessus des logos pas pratique non??.

    Nom : Sans titre.png
Affichages : 155
Taille : 11,3 Ko

  14. #34
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fideel Voir le message
    mais la marges en haut de page ,en dessus des logos pas pratique non??.
    Bah, ça c'est les marges par défaut, 72 points, soit 1 pouce, soit 25,4 mm.

    Tu peux forcer les marges, ou permettre à l'utilisateur de les configurer aussi avec un "PageDialog" ou une interface custom.

    Pour forcer les marges, après avoir récupérer le defaultFormat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Paper paper = defaultFormat.getPaper(); 
    double leftMargin = convertMMToPoints(10); // 10 mm 
    double rightMargin = convertMMToPoints(10); // 10 mm
    double topMargin = convertMMToPoints(10); // 10 mm
    double bottomMargin = convertMMToPoints(10); // 10 mm
    Rectangle2D.Double imageable = new Rectangle2D.Double(
    				leftMargin,
    				topMargin,
    				paper.getWidth()-leftMargin-rightMargin,
    				paper.getHeight()-topMargin-bottomMargin
    				);
    paper.setImageableArea(imageable.getX(), imageable.getWidth(),imageable.getWidth(), imageable.getHeight());
     
    defaultFormat.setPaper(paper);
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private static double convertMMToPoints(double mm) {
         double inches = mm/25.4;
         return inches*72;
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #35
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    emm..où je doit implémenter ce code pour ne pas tomber dans ce qu'est Interdit ??

  16. #36
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    après avoir récupérer le defaultFormat
    donc juste après ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pp_pf = prnJob.defaultPage();
    par exemple, tu fais une méthode setDefaultMargins(PageFormat defaultFormat) avec le code ci-avant dedans, et tu l'appelles setDefaultMargins(pp_pf);. Et si tu veux permettre l'utilisateur de changer les marges dans l'interface, tu te fais une méthode avec les marges en paramètres...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #37
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    voilà, c'est impeccable maintenant..tu es vraiment super.

    une dernière chose pour terminer cette application.

    comment je peux récupérer le nombre e page avant l'affichage??

  18. #38
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fideel Voir le message
    comment je peux récupérer le nombre e page avant l'affichage??
    Bah, tu le faisais déjà ça... tu simulais une impression, en imprimant chaque page successivement jusqu'à obtenir NO_SUCH_PAGE.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  19. #39
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 98
    Par défaut
    se sera après l'impression?? je veux le récupérer pour l'afficher dans le footer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TextUtils.drawString(graphics, "Page " + (pageIndex+1) ,.....

  20. #40
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Tu le fais déjà dans getThePreviewPages ! C'est pageIndex, à la fin de la boucle de simulation. Sauf que tu ne le stockes pas là où il serait accessible en dehors de cette méthode. Si tu le stockes par exemple en variable de classe, tu pourras le réutiliser là où tu veux dans la classe (donc au moment où tu construis le footer...)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [SP-2010] Ajouter un Logo dans le ruban d'un formulaire
    Par Gratiano dans le forum SharePoint
    Réponses: 2
    Dernier message: 25/07/2014, 11h33
  2. Logo dans une entête
    Par DPhBxl dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/08/2008, 12h06
  3. [OpenOffice][Texte] Insérer un Logo dans une entête de writer
    Par jpl44 dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 26/04/2007, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo