Partage
  • Partager sur Facebook
  • Partager sur Twitter

Java paramètre impression formulaire

    22 juin 2009 à 11:15:26

    Bonjour,

    Quand j'imprime depuis mon application java, la qualité n'est pas suffisante. Le problème semble venir de la résolution utilisée pour imprimer.

    Les pixels sont trop grands et j'aimerais donc que lors de l'impression, ils soient plus petit.

    Là où c'est fort génant, c'est pour du texte écrit en police 8 (sous java donc). Dans ce cas, c'est presque ilisible et ça me donne une ligne qui devient dure à lire et pas présentable.
    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2009 à 15:21:08

      Présente le code d'impression (au niveau de WindowListenner par exemple)
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2009 à 9:32:28

        Ca, ça se trouve dans ma classe Main.

        Citation


        // Le bouton imprimer
        imprimer.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent arg0) {
        MPanelPrinter printOnglet1 = new MPanelPrinter(onglet1);
        MPanelPrinter printOnglet2 = new MPanelPrinter(onglet2);
        MPanelPrinter printOnglet3 = new MPanelPrinter(onglet3);
        MPanelPrinter printOnglet4 = new MPanelPrinter(onglet4);
        printOnglet1.print();
        printOnglet2.print();
        printOnglet3.print();
        printOnglet4.print();
        }
        });



        Et ça dans une autre classe

        Citation


        import java.awt.Color;
        import java.awt.Dimension;
        import java.awt.Graphics;
        import java.awt.Graphics2D;
        import java.awt.GridBagLayout;
        import java.awt.RenderingHints;
        import java.awt.print.PageFormat;
        import java.awt.print.Paper;
        import java.awt.print.Printable;
        import java.awt.print.PrinterException;
        import java.awt.print.PrinterJob;
        import java.util.Vector;

        import javax.swing.*;

        public class MPanelPrinter implements Printable
        {

        public MPanelPrinter(JPanel panel)
        {
        documentTitle = "";
        this.panel = panel;
        initPrintablePanel();
        }

        public void initPrintablePanel()
        {
        showPrintZone = false;
        fitIntoPage = false;
        wrapComponent = false;
        printJob = PrinterJob.getPrinterJob();
        pageFormat = printJob.defaultPage();
        // pageFormat = printJob.pageDialog(pageFormat); // mise en page
        pageFormat.setOrientation(1);
        }

        public void setOrientation(int orientation)
        {
        pageFormat.setOrientation(orientation);
        }

        public void setPrintZoneVisible(boolean status)
        {
        showPrintZone = status;
        }

        public void setWrapComponent(boolean status)
        {
        wrapComponent = status;
        }

        public void setFitIntoPage(boolean status)
        {
        fitIntoPage = status;
        }

        public int getPageWidth()
        {
        return (int)pageFormat.getImageableWidth();
        }

        public double getMarginTop ()
        {
        return pageFormat.getImageableY();
        }

        public double getMarginLeft ()
        {
        return pageFormat.getImageableX();
        }

        public void setLRMargins(int margin)
        {
        Paper paper = pageFormat.getPaper();
        paper.setImageableArea(paper.getImageableX() - (double)(margin / 2), paper.getImageableY(), paper.getImageableWidth() + (double)(margin / 2), paper.getImageableHeight());
        pageFormat.setPaper(paper);
        }

        public void setTBMargins(int margin)
        {
        Paper paper = pageFormat.getPaper();
        paper.setImageableArea(paper.getImageableX(), paper.getImageableY() - (double)(margin / 2), paper.getImageableWidth(), paper.getImageableHeight() + (double)(margin / 2));
        pageFormat.setPaper(paper);
        }

        public void setDocumentTitle(String title)
        {
        documentTitle = title;
        }

        public int print(Graphics g, PageFormat pf, int pageIndex)
        throws PrinterException
        {
        Dimension tailleDoc = panel.getSize();
        double hauteurDocu = tailleDoc.getHeight();
        double hauteurPage = pf.getImageableHeight();
        double largeurDocu = tailleDoc.getWidth();
        double largeurPage = pf.getImageableWidth();
        int totalNumPages = (int)Math.ceil(hauteurDocu / hauteurPage);
        if(wrapComponent)
        totalNumPages = taillePages.size();
        else
        if(fitIntoPage)
        totalNumPages = 1;
        double scaleX = largeurPage / largeurDocu;
        double scaleY = hauteurPage / hauteurDocu;
        if(pageIndex >= totalNumPages)
        return 1;
        Graphics2D g2d = (Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g2d.translate(pf.getImageableX(), pf.getImageableY());
        if(fitIntoPage)
        {
        double ratio = Math.min(scaleX, scaleY);
        g2d.scale(ratio, ratio);
        } else
        if(wrapComponent)
        {
        if(pageIndex > 0)
        g2d.translate(0.0D, -((Double)taillePages.get(pageIndex - 1)).doubleValue());
        } else
        {
        g2d.translate(0.0D, (double)(-pageIndex) * hauteurPage);
        }
        panel.paint(g2d);
        if(wrapComponent)
        {
        double hauteurBlanc = ((Double)taillePages.get(pageIndex)).doubleValue();
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0, (int)hauteurBlanc, (int)largeurPage, (int)hauteurBlanc + (int)hauteurPage);
        }
        if(wrapComponent)
        {
        if(pageIndex > 0)
        g2d.translate(0.0D, ((Double)taillePages.get(pageIndex - 1)).doubleValue());
        } else
        {
        g2d.translate(0.0D, (double)pageIndex * hauteurPage);
        }
        return 0;
        }

        public void print()
        {
        printJob.setPrintable(this, pageFormat);
        try
        {
        if(printJob.printDialog())
        {
        if(wrapComponent)
        calculatePages();
        Paper paper = pageFormat.getPaper();
        Paper save = pageFormat.getPaper();
        // paper.setImageableArea(0, 0, 595, 842);
        paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
        // paper.setImageableArea(paper.getImageableX(), paper.getImageableY(), paper.getWidth() - paper.getImageableX(), paper.getHeight() - paper.getImageableY());
        pageFormat.setPaper(paper);
        printJob.setPrintable(this, pageFormat);
        printJob.print();
        pageFormat.setPaper(save);
        }
        }
        catch(PrinterException pe)
        {
        System.out.println("Erreur lors de l'impression du document: " + toString());
        }
        }

        private void calculatePages()
        {
        taillePages = new Vector();
        double hauteurPage = pageFormat.getImageableHeight();
        double hauteurTotal = 0.0D;
        double hauteurCumul = 0.0D;
        for(int i = 0; i < panel.getComponentCount(); i++)
        {
        int gridBagInsets = 0;
        if(panel.getLayout() instanceof GridBagLayout)
        gridBagInsets = ((GridBagLayout)panel.getLayout()).getConstraints(panel.getComponent(i)).insets.bottom + ((GridBagLayout)panel.getLayout()).getConstraints(panel.getComponent(i)).insets.top;
        double hauteurComponent = panel.getComponent(i).getSize().getHeight() + (double)gridBagInsets;
        if(hauteurComponent > hauteurPage)
        {
        wrapComponent = false;
        return;
        }
        hauteurTotal += hauteurComponent;
        if(hauteurTotal > hauteurPage)
        {
        hauteurTotal -= hauteurComponent;
        hauteurCumul += hauteurTotal;
        taillePages.add(new Double(hauteurCumul));
        hauteurTotal = hauteurComponent;
        }
        }

        hauteurCumul += hauteurTotal;
        taillePages.add(new Double(hauteurCumul));
        }

        private JPanel panel;
        private boolean showPrintZone;
        private boolean fitIntoPage;
        private boolean wrapComponent;
        private PageFormat pageFormat;
        private PrinterJob printJob;
        private Vector taillePages;
        private String documentTitle;
        public static final int PORTRAIT = 1;
        public static final int LANDSCAPE = 0;

        }

        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2009 à 16:29:10

          On ne pourra jamais suivre ainsi, utilise les balises java <code type="java"></code>
          • Partager sur Facebook
          • Partager sur Twitter

          Java paramètre impression formulaire

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown