wydruk w rozdzielczości innej niż 72 DPI

0

witam,
jak puścić do drukarki wydruk w większej rozdzielczości? dajmy na to 300 DPI?
próbowałem

 attributes.add(new PrinterResolution(300,300,PrinterResolution.DPI));

, ale nie działa.
Szuka i szukam i nic nie znajduję.

Poniżej zamieszczam kod. Co trzeba wstawić by drukowało się z inną rozdzielczością?
Bardzo proszę o pomoc:)

 
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.print.attribute.*;
import javax.swing.*;

public class PrintTest
{
   public static void main(String[] args)
   {
      EventQueue.invokeLater(new Runnable()
         {
            public void run()
            {
               JFrame frame = new PrintTestFrame();
               frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               frame.setVisible(true);
            }
         });
   }
}

class PrintTestFrame extends JFrame
{
   public PrintTestFrame()
   {
      setTitle("PrintTest");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

      canvas = new PrintComponent();
      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 e)
               {
                  JOptionPane.showMessageDialog(PrintTestFrame.this, e);
               }
            }
         });

      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);
            }
         });

      add(buttonPanel, BorderLayout.NORTH);
   }

   private PrintComponent canvas;
   private PrintRequestAttributeSet attributes;

   private static final int DEFAULT_WIDTH = 300;
   private static final int DEFAULT_HEIGHT = 300;
}

/**
 * This component generates a 2D graphics image for screen display and printing.
 */
class PrintComponent extends JComponent implements Printable
{
   public void paintComponent(Graphics 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.scale(1./3, 1./3);
      drawPage(g2);
      return Printable.PAGE_EXISTS;
   }

   public void drawPage(Graphics2D g2)
   {
      g2.drawRect(100, 100, 3*72, 3*72);
   }
}

0

Może ma ktoś i mógłby wrzucić jakikoliwiek kod, gdzie jest wydruk z inną rozdzielczością?
Jeśli tak to bardzo o to proszę, przeanalizuję sobie.

0

W dokumentacji jest napisane:
"In some cases this may be more simply achieved by specifying a PrintQuality attribute which often controls resolution."
http://download.oracle.com/javase/6/docs/api/javax/print/attribute/standard/PrinterResolution.html

W moim systemie mam ustawione, że dpi jest automatycznie wybierane na podstawie jakości wydruku.

Spróbuj jedną z opcji:
-dodaj atrybut PrintQuality.HIGH
-zmienić w systemie, aby DPI nie było kontrolowane przez jakość wydruku

1 użytkowników online, w tym zalogowanych: 0, gości: 1