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

API standards et tierces Java Discussion :

[stratégie][débutant]Comment imprimer un document ?


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut [stratégie][débutant]Comment imprimer un document ?
    Salut à tous !

    Voici la situation :
    J'aimerai créer une application windows dans laquelle il est possible de saisir des données puis de les imprimer.

    Ma question est : comment faire pour imprimer ces données avec Java ? Y a-t-il des modèles de documents à utiliser ?
    Comment générer un document à imprimer ?

    Merci d'avance pour votre aide.

    Patrick

  2. #2
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    salut,

    c'est quoi que tu veux imprimer ? un composant de type JPanel ou bien un le contenu d'un fichier.
    Si c'est une appli swing et que la saisie se retrouve par exemple dans un JPanel, c'est tout a fait possible de les imprimer.
    il faut que le JPanel implement l'interface Printable.

    et en fait ca utilise l'interface d'impression de windows si ca tourne sous windows.

  3. #3
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    re

    j'ai trouvé un exemple de code qui imprime une page (page unique , apparement ca differe un peu si tu veux imprimer plusieur pages)
    en tout cas voila de quoi commencer et résoudre quelques questions.

    J'ai testé, la classe se suffit a elle meme et fonctionne
    @+

    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
     
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Shape;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.font.FontRenderContext;
    import java.awt.font.TextLayout;
    import java.awt.geom.AffineTransform;
    import java.awt.geom.GeneralPath;
    import java.awt.geom.Line2D;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.awt.print.PageFormat;
    import java.awt.print.Printable;
    import java.awt.print.PrinterException;
    import java.awt.print.PrinterJob;
     
    import javax.print.attribute.HashPrintRequestAttributeSet;
    import javax.print.attribute.PrintRequestAttributeSet;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
     
    /**
     * This program demonstrates how to print 2D graphics
     */
    public class PrintTest {
        public static void main(String[] args) {
            JFrame frame = new PrintTestFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.show();
        }
    }
     
    /**
     * This frame shows a panel with 2D graphics and buttons to print the graphics
     * and to set up the page format.
     */
     
    class PrintTestFrame extends JFrame {
        public PrintTestFrame() {
            setTitle("PrintTest");
            setSize(WIDTH, HEIGHT);
     
            Container contentPane = getContentPane();
            canvas = new PrintPanel();
            contentPane.add(canvas, BorderLayout.CENTER);
     
            attributes = new HashPrintRequestAttributeSet();
     
            JPanel buttonPanel = new JPanel();
            JButton printButton = new JButton("Print");
            buttonPanel.add(printButton);
            printButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                    try {
                        PrinterJob job = PrinterJob.getPrinterJob();
                        job.setPrintable(canvas);
                        if (job.printDialog(attributes)) {
                            job.print(attributes);
                        }
                    } catch (PrinterException exception) {
                        JOptionPane.showMessageDialog(PrintTestFrame.this,
                                exception);
                    }
                }
            });
     
            JButton pageSetupButton = new JButton("Page setup");
            buttonPanel.add(pageSetupButton);
            pageSetupButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                    PrinterJob job = PrinterJob.getPrinterJob();
                    job.pageDialog(attributes);
                }
            });
     
            contentPane.add(buttonPanel, BorderLayout.NORTH);
        }
     
        private PrintPanel canvas;
     
        private PrintRequestAttributeSet attributes;
     
        private static final int WIDTH = 300;
     
        private static final int HEIGHT = 300;
    }
     
    /**
     * This panel generates a 2D graphics image for screen display and printing.
     */
     
    class PrintPanel extends JPanel implements Printable {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D) g;
            drawPage(g2);
        }
     
        public int print(Graphics g, PageFormat pf, int page)
                throws PrinterException {
            if (page >= 1)
                return Printable.NO_SUCH_PAGE;
            Graphics2D g2 = (Graphics2D) g;
            g2.translate(pf.getImageableX(), pf.getImageableY());
            g2.draw(new Rectangle2D.Double(0, 0, pf.getImageableWidth(), pf
                    .getImageableHeight()));
     
            drawPage(g2);
            return Printable.PAGE_EXISTS;
        }
     
        /**
         * This method draws the page both on the screen and the printer graphics
         * context.
         * 
         * @param g2
         *            the graphics context
         */
        public void drawPage(Graphics2D g2) {
            FontRenderContext context = g2.getFontRenderContext();
            Font f = new Font("Serif", Font.PLAIN, 72);
            GeneralPath clipShape = new GeneralPath();
     
            TextLayout layout = new TextLayout("Hello", f, context);
            AffineTransform transform = AffineTransform.getTranslateInstance(0, 72);
            Shape outline = layout.getOutline(transform);
            clipShape.append(outline, false);
     
            layout = new TextLayout("World", f, context);
            transform = AffineTransform.getTranslateInstance(0, 144);
            outline = layout.getOutline(transform);
            clipShape.append(outline, false);
     
            g2.draw(clipShape);
            g2.clip(clipShape);
     
            final int NLINES = 50;
            Point2D p = new Point2D.Double(0, 0);
            for (int i = 0; i < NLINES; i++) {
                double x = (2 * getWidth() * i) / NLINES;
                double y = (2 * getHeight() * (NLINES - 1 - i)) / NLINES;
                Point2D q = new Point2D.Double(x, y);
                g2.draw(new Line2D.Double(p, q));
            }
        }
    }

  4. #4
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Si je comprends bien, tu imprimes directement un jPanel.

    Est-il possible de générer complètement un document à imprimer à partir de différentes variables ?

    J'aimerai pouvoir imprimer un document du type de celui-ci, à partir d'informations présentes dans une base de données mais je ne sais vraiment pas par où commencer.

    Est-ce que l'un(e) d'entre vous aurait une idée ::

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 224
    Points : 78
    Points
    78
    Par défaut
    Salut si c'est pour imprimer un document formatté regarde l'api jdic qui fournit une classe Desktop

    pour imprimer (ou ouvrir) un document avec l'impprimante par défaut (ou l'editeur par défaut) tu as juste a créer un File avec le chemin de ton document et tu fais soit

    Desktop.print();

    soit

    Desktop.open();

    tu peux dl l'api sur ce site : https://jdic.dev.java.net/

  6. #6
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Merci pour cette information flzox, je vais tester l'api jdic.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment imprimer un document en delphi
    Par rommel7 dans le forum Delphi
    Réponses: 5
    Dernier message: 26/04/2007, 10h30
  2. Comment Imprimer un document Word depuis Delphi ?
    Par jwff_22 dans le forum Delphi
    Réponses: 1
    Dernier message: 28/03/2007, 20h24
  3. [iframe] Comment imprimer un document inséré dans une iframe ?
    Par guidav dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 23/11/2006, 11h00
  4. Comment imprimer des documents ?
    Par fix105 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/07/2006, 08h32
  5. Réponses: 6
    Dernier message: 06/04/2006, 10h43

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