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 :

[Swing] Imprimer des JeditorPane sur plusieurs pages ?


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut [Swing] Imprimer des JeditorPane sur plusieurs pages ?
    Bonjour,

    J'ai créé une classe IHMDocumentHTML qui contient 3 JeditorPane (un pour l'entête, un pour le pied de page et un pour le corps su document. J'arrive à imprimer quand le document ne fait qu'une page mais pas sur plusieurs, sachant qu'il faut que l'entête et le pied apparaissent sur toutes les pages.

    Si quelqu'un a une idée ....

    Merci d'avance et bonne journée!

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Un bout de code vite fait mal fait qui fonctionne j'espère.

    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
     
    if (pageLayoutNotDoneBefore) {
    // Calcul de la hauteur d'une page centrale et du nombre de page en fonction du pageformat (penser à l'orientation).
    // Egalement mettre les editorpane à la bonne largeur.
    int centerHeight = pageHeight-(headerHeight+bottomHeight);
    int pageNumber = 1+pageHeight/centerHeight
    ...
    }
     
    // Bien placer l'origine du graphics g1 en fonction du pageformat et de l'orientation.
     
    // => Ici on est en haut à gauche de la page au début de la zone imprimable.
     
    // Impression du header.
    header.printComponent(g1):
    // On se place sous le header.
    g1.translate(0, headerHeight):
     
    // Impression de la page courante au centre.
    // Coordonnée de la page actuelle.
    int centerY = pageIndex * centerHeight;
    // Ou alors avec un setClip si tu ne veux pas creer un sous-graphics.
    graphics.translate(0, -centerY);
    Graphics2D g2 = (Graphic2D)graphics.create(0, centerY, pageWidth, pageHeight);
    tr {
      center.printComponent(g2);
    }
    finally (
      g2.dispose();
    }
    g1.translate(0, centerY);
     
    // Impression du footer.
    // On se place sous le centre.
    g1.translate(0, centerHeight);
    footer.printComponent(g1);
     
    // Retour à l'origine.
    graphics.translate(0, -(centerHeight+headerHeight):
     
    // => Ici on est en haut à gauche de la page au début de la zone imprimable.
     
    ...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    J'essaierai avec ça merci

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Attention cependant même si le code marche dans ses grandes lignes tu risques de te retrouver avec des lignes de texte imprimées entre 2 pages.

    Pour faire ca plus "correct" il faudra utiliser une classe de layout de texte (ou de rendu de page web si tu utilises du HTML).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Graphics2D g2 = (Graphic2D)graphics.create(0, centerY, pageWidth, pageHeight);
    tr {
      center.printComponent(g2);
    }
    finally (
      g2.dispose();
    }
    ne marche pas car la méthode printComponent n'est pas visible... Donc avec un Graphics tout court ça passe (pour les headers et footers) mais pas le Graphics2D

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    J'ai rien dit, il manquait juste un s à printComponent...

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Comme j'ai dit c'est du code vite fait mal fait même pas testé.

    Sinon c'est probablement mieux d'utiliser la méthode print() plutôt que printComponent().
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Ah, y'a quelque chose qui s'imprime ... c'est déjà pas si mal ... j'ai quelque décalage sur les bords (les bords ne s'affichent pas). Mon image ne doit pas etre assez réduite.

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    J'ai encore un souci, il imprime toujours la même chose dans le corps du document, quelque soit la page...

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Ah ?

    Juste qq idee comme ca:

    Es-tu sur de bien faire un print() sur un JeditorPane et non pas un JScrollPane ?

    Le decallage vertical de la vue/cadre/clip imprimee augmente-t'il correctement a chaque page ?

    Sinon y va me falloir tester (zuteu... pas envie ), peux-tu montrer du code ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Voila le code, j'ai surement fait une erreur, j'ai un peu du mal à saisir les Graphics ...

    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
    int largeurPage = (int)metier.METConstantes.convertMillimetreToPoint(getIhmDocumentHtml().getParametresDocument().getLargeurPage()); /*21mm*/
    int hauteurPage = (int)metier.METConstantes.convertMillimetreToPoint(getIhmDocumentHtml().getParametresDocument().getHauteurPage()); /*29mm*/
    int hauteurEntete = getIhmDocumentHtml().getPreferredSizeEntete().height;
    int hauteurPied = getIhmDocumentHtml().getPreferredSizePied().height;
    int hauteurCorps = hauteurPage-(hauteurEntete+hauteurPied);
    // -> Toutes ces valeurs sont correctes à l'exécution
     
    if (numeroPage < 0 || numeroPage >= getIhmDocumentHtml().getNumberOfPages())
             return Printable.NO_SUCH_PAGE;
     
          Paper papier = new Paper(); 
          papier.setSize(largeurPage, hauteurPage);
          papier.setImageableArea(metier.METConstantes.convertMillimetreToPoint(getIhmDocumentHtml().getParametresDocument().getMargeGauche()), 
                metier.METConstantes.convertMillimetreToPoint(getIhmDocumentHtml().getParametresDocument().getMargeHaut()), 
                largeurPage - metier.METConstantes.convertMillimetreToPoint(getIhmDocumentHtml().getParametresDocument().getMargeGauche() + getIhmDocumentHtml().getParametresDocument().getMargeDroite()),
                hauteurPage - metier.METConstantes.convertMillimetreToPoint(getIhmDocumentHtml().getParametresDocument().getMargeHaut() + getIhmDocumentHtml().getParametresDocument().getMargeBas()));
          pageFormat.setPaper(papier);
     
          // Impression du header puis on se place sous le header
          g.setClip(0, 0, largeurPage, hauteurPage);     
          getIhmDocumentHtml().getJEditorPaneEntete().print(g);
          g.translate(0, hauteurEntete);
     
          // Impression de la page courante au centre. Coordonnée de la page actuelle.
          int centerY = numeroPage * hauteurCorps;
          g.translate(0, -centerY);
          Graphics2D g2 = (Graphics2D)g.create(0, centerY, largeurPage, hauteurCorps);
          getIhmDocumentHtml().getJEditorPaneCorps().print(g2);
          g.translate(0, centerY);
     
          // Impression du footer puis on se place sous le centre.
          g.translate(0, hauteurCorps);
          getIhmDocumentHtml().remplacerPages(new String[] { "{" + CHAMP_NUMERO_PAGE + "}", "{" + CHAMP_NOMBRE_PAGES + "}" }, 
                new String[] {String.valueOf(currentPage+1), String.valueOf(getIhmDocumentHtml().getNumberOfPages()) });
          getIhmDocumentHtml().getJEditorPanePied().print(g);
     
          // Retour à l'origine.
          g.translate(0, -(hauteurCorps+hauteurEntete));
     
          // => Ici on est en haut à gauche de la page au début de la zone imprimable.
    Merci d'avance

  12. #12
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Hum ca me vas pas de faire des heures sup pas payées moi... M'enfin y avait rien de bien à la TV ce soir. Voici une classe de test vite dévellopée (et qui marche.. chez moi en tout cas). Evidement comme prévu il y a parfois des lignes placées entre 2 pages. Le code testé avec les fichiers fournis doit générer 4 images.

    La classe de test, pas optimisée vite tapée dans JBuilder...
    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
     
    package test;
     
    import javax.swing.*;
    import javax.imageio.*;
    import java.awt.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import java.awt.print.*;
    import java.io.*;
    import javax.swing.text.*;
     
     
    /**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2005</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    class Test extends JFrame implements ActionListener {
      BorderLayout borderLayout1 = new BorderLayout();
      JEditorPane jEditorPane1 = new JEditorPane();
      JEditorPane jEditorPane2 = new JEditorPane();
      JEditorPane jEditorPane3 = new JEditorPane();
      JScrollPane jScrollPane1 = new JScrollPane(jEditorPane1);
      JScrollPane jScrollPane2 = new JScrollPane(jEditorPane2);
      JScrollPane jScrollPane3 = new JScrollPane(jEditorPane3);
      JMenuBar jMenuBar1 = new JMenuBar();
      JMenu jMenu1 = new JMenu();
      JMenuItem jMenuItem1 = new JMenuItem();
     
      public Test() {
        try {
          jbInit();
        } catch (Exception ex) {
          ex.printStackTrace();
        }
        setSize(320, 400);
      }
     
      private void jbInit() throws Exception {
        String dir = System.getProperty("user.dir");
        jEditorPane1.setPreferredSize(new Dimension(200, 50));
        jEditorPane1.setPage("file:" + dir + "/doc/header.html");
        jEditorPane2.setPage("file:" + dir + "/doc/center.html");
        jEditorPane3.setPreferredSize(new Dimension(200, 50));
        jEditorPane3.setPage("file:" + dir + "/doc/footer.html");
        this.getContentPane().setLayout(borderLayout1);
        jMenu1.setText("File");
        jMenuItem1.setText("Print");
        jMenuItem1.addActionListener(this);
        this.getContentPane().add(jScrollPane1, java.awt.BorderLayout.NORTH);
        this.getContentPane().add(jScrollPane2, java.awt.BorderLayout.CENTER);
        this.getContentPane().add(jScrollPane3, java.awt.BorderLayout.SOUTH);
        jMenuBar1.add(jMenu1);
        jMenu1.add(jMenuItem1);
        this.setJMenuBar(jMenuBar1);
      }
     
      public void doPrint() {
        // Because I do not have a printer.
        doSaveAsImage();
      }
     
      public void doSaveAsImage() {
        Printable printable = new EditorPrintable(jEditorPane1, jEditorPane2, jEditorPane3);
        Paper paper = new Paper();
        paper.setImageableArea(0, 0, 300, 400);
        PageFormat format = new PageFormat();
        format.setPaper(paper);
        try {
          for (int i = 0; true; i++) {
            BufferedImage image = new BufferedImage(300, 400, BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics = image.createGraphics();
            graphics.setColor(Color.WHITE);
            graphics.fillRect(0, 0, image.getWidth(), image.getHeight());
            if (printable.print(graphics, format, i) == Printable.NO_SUCH_PAGE) {
              break;
            }
            graphics.setColor(Color.BLUE);
            graphics.setFont(new Font("Dialog", Font.PLAIN, 48));
            graphics.drawString("Image #" + i, 100, 100);
            graphics.dispose();
            ImageIO.write(image, "png", new File("test" + i + ".png"));
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
     
     
      public void actionPerformed(ActionEvent event) {
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            doPrint();
          }
        });
      }
     
      public static void main(String[] args) {
        Test t = new Test();
        t.setDefaultCloseOperation(EXIT_ON_CLOSE);
        t.setVisible(true);
      }
     
    }
    Le code du printable en lui-même :
    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
     
    package test;
     
    import java.awt.*;
    import java.awt.print.*;
    import javax.swing.*;
    import javax.swing.text.*;
     
    /**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2005</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    class EditorPrintable implements Printable {
     
      private JEditorPane header;
      private JEditorPane center;
      private JEditorPane footer;
      private boolean layoutDone = false;
      private int pageNumber = 0;
      private int headerHeight = 75;
      private int centerHeight = 0;
      private int footerHeight = 75;
     
      public EditorPrintable(JEditorPane header, JEditorPane center, JEditorPane footer) {
        this.header = header;
        this.center = center;
        this.footer = footer;
      }
     
      /** {@inheritDoc}
       */
      public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {
        int pageWidth = (int) pageFormat.getImageableWidth();
        int pageHeight = (int) pageFormat.getImageableHeight();
        if (!layoutDone) {
          header.setSize(pageWidth, headerHeight);
          footer.setSize(pageWidth, footerHeight);
          centerHeight = pageHeight - (headerHeight + footerHeight);
          center.setSize(pageWidth, center.getHeight());
          int maxCenterHeight = center.getHeight();
          pageNumber = 1 + maxCenterHeight / centerHeight;
          layoutDone = true;
        }
        if (pageIndex >= pageNumber) {
          return NO_SUCH_PAGE;
        }
        double pageX = pageFormat.getImageableX();
        double pageY = pageFormat.getImageableY();
        Graphics2D g1 = (Graphics2D) g;
        g1.translate(pageX, pageY);
        header.print(g1);
        g1.translate(0, headerHeight);
        int centerY = pageIndex * centerHeight;
        g1.translate(0, - centerY);
        Shape oldClip = g1.getClip();
        g1.setClip(0, centerY, pageWidth, centerHeight);
        center.print(g1);
        g1.setClip(oldClip);
        g1.translate(0, centerY);
        g1.translate(0, centerHeight);
        footer.print(g1);
        g1.translate(0, -(headerHeight + centerHeight));
        g1.translate( -pageX, -pageY);
        return PAGE_EXISTS;
      }
    }
    Le header:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html>
    <head>
    <title>TEST</title>
    </head>
    <body>
    <p>This is the header page.</p>
    </body>
    </html>
    Le centre :
    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
     
    <html>
    <head>
    <title>TEST</title>
    </head>
    <body>
    <ol>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
      <li>This is the center page.</li>
    </ol>
    </body>
    </html>
    Le footer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html>
    <head>
    <title>TEST</title>
    </head>
    <body>
    <p>This is the footer page.</p>
    </body>
    </html>
    Bon moi je vais me coucher j'ai pas envie de rester debout jusqu'à minuit aujourd'hui... dodo...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  13. #13
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Merci, c'est super sympa, je vais méditer là-dessus...

  14. #14
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Rectif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      pageNumber = (int)Math.ceil((float)maxCenterHeight / centerHeight);
    Ca évitera d'avoir une page blanche quand la hauteur de l'éditor pane est un multiple de celle du "viewport".

    Allez hop au lit !
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  15. #15
    Futur Membre du Club
    Inscrit en
    Mai 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Ca marche impec ( à part les lignes coupées bien sûr mais c'est déjà bien!

    Merci

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    Désolé pour le déterrage de topic mais ce sujet m'interesse...

    J'ai repris ton code malheureusement je rencontre deux problème smajeurs :

    1) la fonction center.getHeight() du printable me donne 0 systématiquement... si bien que pour le moment j'assigne une valeur statiquement comme ceci pour pouvoir tester le reste : center.setSize(pageWidth,750);

    2) j'ignore pourquoi mais chez moi le texte généré sur l'image est vraiment très réduit en largeur, il passe desuite à la ligne je ne sais pas du tout pourquoi je rate peut etre quelque chose d'essentiel...

    (voir l'image ci jointe pour voir le résultat que j'obtiens)

    Si bouye ou quelqu'un d'autre pouvait m'aider pour ces deux points je serai débloqué je pense merci d'avance se serait très sympa
    Images attachées Images attachées  

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    J'ai trouvé ce que je fesais mal

    J'avais enlevé le t.setVisible(true); apparement c'est pas bien de faire ça ^^

    Par cotnre j'aimerais avoir des informations supplémentaires sur:

    Pour faire ca plus "correct" il faudra utiliser une classe de layout de texte (ou de rendu de page web si tu utilises du HTML).
    ça veut dire quoi au juste je ne comprend pas trop...

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    J'édite car ma question n'est plus d'actualité

    Mais par contre je suis encore plus interessé par quelques informations supplémentaires (de sorte à comprendr de quoi il sagit) sur la solution évoquée pour résoudre le problème de la ligne entre les pages.

  19. #19
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    C'est simple (enfin c'est simple a dire, probablement pas a faire) plutot que de laisser le JEditorPane a faire le layout du texte pour toi, il va le falloir le faire a sa place. Alors si c'etait tu texte simple tu as TextLayout qui peut t'aider... mais pour du HTML avec potentiellement des images... Regarde si tu peux acceder aux sources des classes qui s'occupent du rendu du HTML dans les sources de JEditorPane.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par bouye
    C'est simple (enfin c'est simple a dire, probablement pas a faire) plutot que de laisser le JEditorPane a faire le layout du texte pour toi, il va le falloir le faire a sa place. Alors si c'etait tu texte simple tu as TextLayout qui peut t'aider... mais pour du HTML avec potentiellement des images... Regarde si tu peux acceder aux sources des classes qui s'occupent du rendu du HTML dans les sources de JEditorPane.

    Hum je crains que ce ne soit trop compliqué pour moi:-( (je suis débutant en fait...)

    Je vais surement dire une bêtise mais penses tu que cela soit faisable de mettre uniquement une table dans la page center.html, et calculer en fonction de la hauteur d'une ligne de cette table à quelle hauteur fixer le centerheight (en prennant un multiple de la hauteur d'une ligne)?
    De sorte que chaque fin de page coincide avec une fin de ligne...
    Ou alors c est totalement tordu et irréalisable?

    Merci de ton avis.

Discussions similaires

  1. [XSLT] Répartir des résultats sur plusieurs pages
    Par handybag dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/11/2008, 14h03
  2. [MySQL] Des données sur plusieurs pages d'affilé
    Par Sten dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/06/2008, 13h39
  3. imprimer une diapositive sur plusieurs page
    Par Flow_75 dans le forum Powerpoint
    Réponses: 1
    Dernier message: 15/07/2007, 03h21
  4. Imprimer un Jpanel sur plusieurs pages.
    Par Amrac dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 11/03/2007, 15h19
  5. Imprimer des pdf sur plusieurs imprimantes
    Par Peyotte dans le forum Delphi
    Réponses: 9
    Dernier message: 16/08/2006, 09h17

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