Druckerproblem

Status
Nicht offen für weitere Antworten.

The_God

Aktives Mitglied
Habe ein sehr großes prob beim drucken. Mein Code:

Code:
  void jButton5_actionPerformed(ActionEvent e) {
    double auflösung = Integer.parseInt(jTextField1.getText()); // in Pixel/inch
    double w = 60; // in mm
    double h = 60; // in mm

    // Umrechnung von von Weite und Höhe in pixel
    int wpx = (int)(w*auflösung/25.4);
    int hpx = (int)(h*auflösung/25.4);

    // Graphik erzeugen
    BufferedImage bImg = new BufferedImage(wpx, hpx, BufferedImage.TYPE_INT_RGB);
    Graphics2D g2d = (Graphics2D) bImg.getGraphics();
    g2d.setBackground(Color.white);
    g2d.fillRect(0,0,wpx,hpx);
    g2d.setColor(Color.black);
    g2d.fillRect(wpx-10,0,10,10);
    g2d.fillRect(wpx-10,hpx-10,10,10);
    g2d.fillRect(0,hpx-10,10,10);
    g2d.fillRect(0,0,10,10);
    g2d.dispose();

    // JPEG erstellen
    ByteArrayOutputStream out = new ByteArrayOutputStream (0xfff);
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    JPEGEncodeParam param;
    param = encoder.getDefaultJPEGEncodeParam(bImg);

    /* Auflösung des Bildes setzen */
    param.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH); // in dots/inch ??
    param.setXDensity((int)auflösung);
    param.setYDensity((int)auflösung);
    param.setQuality((float)0.5,true);

    /* JPEG schreiben */
    try{
      encoder.encode(bImg, param);
      FileOutputStream fos = new FileOutputStream ("C:\\testbild.jpg");
      fos.write(out.toByteArray());
      fos.close();
      out.close();
    }catch (Exception e2){
      System.out.println(e2.toString());
    }


    /* Bild drucken */
    DocFlavor fl = DocFlavor.INPUT_STREAM.JPEG;
    PrintRequestAttributeSet as = new HashPrintRequestAttributeSet();

    as.add(MediaSizeName.ISO_A5);
    as.add(OrientationRequested.PORTRAIT);
    as.add(Chromaticity.MONOCHROME);
    int p = Integer.parseInt(jTextField2.getText());
    PrinterResolution pr = new PrinterResolution(p, p, ResolutionSyntax.DPI);
    as.add(pr);
    //as.add(Fidelity.FIDELITY_TRUE);
    as.add(PrintQuality.HIGH);

    /* Selektierten Drucker einlesen */
    PrintService pserv = ps[jComboBox1.getSelectedIndex()];

    /* zuvor erstelltes JPEG Bild einlesen */
    File fi = new File("C:\\testbild.jpg");

    /* PrintJob anlegen */
    DocPrintJob printJob = pserv.createPrintJob();
    Doc doc = new InputStreamDoc(fi.getAbsolutePath(), fl);

    /* Drucken des Bildes */
    try{
      printJob.print(doc,as);
    }catch(Exception e3){
      System.out.println("e3: "+e3.toString());
    }
  }


Problem:
Wenn ich ein JPEG Bild mit 200 DPI anlege dann muss ich die PrinterResolution auf 368 DPI setzen damit es in der
richtigen Größe ausgedruckt wird.
Verändere ich die Größe des Bildes ändert sich auch wieder die dazugehörige Printer Auflösung

In welchen zusammenhang steht das ganze nun?? Ist 1dot == 1 pixel??

:?:
 

Bert Brenner

Bekanntes Mitglied
Normalerweise ist die Auflösung beim Drucken aus Java 72 dpi.

Der Ausdruck kann natürlich besser aussehen da das Koordinatensystem nicht nur Ganzzahlen braucht.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben