Drucken!

Status
Nicht offen für weitere Antworten.

spong3bob

Aktives Mitglied
Hallo!!
Ich möchte gerne ein Etikettenprogramm programmieren, das so funktioniert, dass man eine etikette auswählt, und dann soll eine A4 seite voll mit diesen ausgedruckt werden (es gehen sich insgesmat 16 davon aus)
also das auswählen geht ja schon, aber wie mach ichs, dass ich eine A4 seite voll davon ausdrucken kann???

hab leider von drucken keinen plan, bzw. wie ich ein JFrame auf A4 größe bringen könnte....

danke für alle konstruktiven antworten
spong3bob
 

spong3bob

Aktives Mitglied
Da schauen

Damn, sry für die forigen posts, firefox hat sich immer aufgehängt, da hab ichs ned mitgekriegt, dass er schon was gesendet hat...
falls das wer kann, bitte löschen :oops:
 

spong3bob

Aktives Mitglied
aber was soll ich da sonst hingeben?
(mit: g2.translate(pf.getImageableX(), pf.getImageableY()); geht aus nicht)
 

André Uhres

Top Contributor
Muss aber.
Code:
       setVisible(true);
        print(mainPanel);
Oder so:
Code:
...
public class PrintPanel extends JFrame implements Printable{
    private Image img;
    public PrintPanel(File bild) {
        img = new ImageIcon(bild.getAbsolutePath()).getImage();
...
    }
...
    public int print(Graphics g, PageFormat pf, int pageIndex) {
...
//            componentToBePrinted.paint(g2); //repaint the page for printing
            etikettenMalen(img, g2, pf);
            response = Printable.PAGE_EXISTS;
        }
        return response;
    }
    private void etikettenMalen(Image img, Graphics2D g, PageFormat pf){
        int x, y = 0;
        int w = (int)pf.getImageableWidth()/2;
        int h = (int)pf.getImageableHeight()/9;
        for (int row = 0; row < 8; row++) {
            x = 0;
            for (int column = 0; column < 2; column++) {
                g.drawImage(img,x,y,null);
                x += w;
            }
            y += h;
        }
    }
...
}
Dann kannst du mainPanel und componentToBePrinted auch ganz rausnehmen.
 

spong3bob

Aktives Mitglied
Danke, jetzt druckt er schon was aus :D aber ned so ganz wie ich will
wie schaff ichs, dass ich ein A4 blatt hab, aber mit kleineren rändern?

also: ich will eine A4 seite aber nur mit 1cm rand,oben, unten, links und rechts

aja, und die bilder druckts mir noch zu groß aus...
hab nix mim format geändert, aber die bilder sind größer als im original
 

André Uhres

Top Contributor
Format: Paper#setSize
Rand: Paper#setImageableArea
Bildbreite: Image#getWidth
Bildhöhe: Image#getHeight
Code:
...
public class PrintPanel extends JFrame implements Printable{
...
    public void print() {
...
        paper.setSize(595, 842);//<-------------------Format
        paper.setImageableArea(30, 30, 535, 782);//<---------------Rand
...
    }
...
    private void etikettenMalen(Image img, Graphics2D g, PageFormat pf){
...
        int w = img.getWidth(null);//<------------------------Bildbreite
        int h = img.getHeight(null);//<------------------------Bildhöhe
...
    }
...
}
 

spong3bob

Aktives Mitglied
hmmmm..
jetzt hab ich wieder einen anderen fehler.. kommt wieder weißes papier....

Code:
 PageFormat pageFormat = new PageFormat();
			Paper paper = new Paper();
			paper.setSize(595, 842);
       		paper.setImageableArea(30, 30, 535, 782);;
			pageFormat.setPaper(paper);
......
	  int x, y = (int)pf.getImageableX();
	  double scale=(pf.getImageableWidth()/2)-img.getWidth(null);
	  int w = img.getWidth(null);
      int h = img.getHeight(null);
	  for (int row = 0; row < 8; row++) {
	      x = 0;
	      for (int column = 0; column < 2; column++) {
	         g.drawImage(img,x,y, (int) (img.getWidth(null)*scale),(int)(img.getHeight(null)*scale) , null);
	         x += w;
	      }
	      y += h;
	    }
 

André Uhres

Top Contributor
Code:
       double scale=(pf.getImageableWidth()/2)/img.getWidth(null);
        int w = (int)(img.getWidth(null)*scale);
        int h = (int)(img.getHeight(null)*scale);
 

spong3bob

Aktives Mitglied
hmm..
irgendwie passt glaub ich die imageable are noch ned bei mir, weil das erste bild is nicht ganz drauf, und der scalefaktor is zu klein (total verkleinert alles)
Code:
paper.setSize(595, 842);
       		paper.setImageableArea(10, 10, 575, 822);
was sind ca. die werte, wenn ich A4 haben will mir ~0.5 cm rand??
 

spong3bob

Aktives Mitglied
Aber irgendwas passt da noch ned..
der macht noch ca. 2cm links und oben rand...
bist du sicher, dass das A4 format stimmt, oder so?
 

André Uhres

Top Contributor
Nur zum richtigen Verständis deiner Anwendung:

Wie sieht die Bilddatei aus, die du im Konstruktor "public PrintPanel(File bild) {}" übergibst? Ist es eine .jpg, .gif oder .png ? Wie gross ist das Originalbild, also wenn es noch nicht verkleinert oder vergrössert wurde (Breite und Höhe in Pixel, oder cm)? Dieses Bild soll ja 16 mal gedruckt werden, in zwei Spalten auf eine A4 Seite, richtig?

EDIT: Ach ja, durch deinen "scale" wird das Etikett möglicherweise weniger breit,
aber auch weniger hoch. Dadurch wird auf dem A4 Papier zwar die Breite ausgenutzt aber nicht unbedingt die Höhe.
In "etikettenMalen" ersetze "int x, y = (int)pf.getImageableX();" durch "int x, y = 0;", denn die Anpassung
erfolgt ja schon durch "g2.translate(pf.getImageableX(), pf.getImageableY());".
Der effektive Rand kann je nach Drucker unterschiedlich ausfallen.
 

spong3bob

Aktives Mitglied
Das bild ist 10 x 3.5 cm ... das ganze is sich im word ausgegangen, wenn ich die ränder verkleinert habe....
aber irgendwie wird das bild im java größer dargestellt???
kA, was es da hat, weil wie ichs ohne scale gemacht hab, da war das bild viel größer als in wirklichkeit (bzw. größer als im word)... nein ich habs nicht in word skaliert :D
kanns sein, dass das is, wenn java ein anderes dpi hat??
achja, es ist ein png bild, das übergebn wird

und das mim g2. translate hab ich vorher rausgelöscht, weil da is das bild noch viel weiter in der mitte (großer rand) ~5 cm von links
 

André Uhres

Top Contributor
spong3bob hat gesagt.:
Das bild ist 10 x 3.5 cm..
So kommt's bei mir ganz anständig raus:
Code:
package print;
/*
 * PrintPanel.java
 */
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.*;
import java.io.*;

public class PrintPanel extends JFrame implements Printable{
    private Image img;
    public PrintPanel(File bild) {
        img = new ImageIcon(bild.getAbsolutePath()).getImage();
        setSize(400,300);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        print();
    }
    public void print() {
        PrinterJob printJob = PrinterJob.getPrinterJob();
        PageFormat pageFormat = new PageFormat();
        Paper paper = new Paper();
        paper.setSize(595, 842);//<-------------------Format
        paper.setImageableArea(5, 5, 585, 832);//<---------------Rand
        pageFormat.setPaper(paper);
        printJob.setPrintable(this, pageFormat);
        if( printJob.printDialog() )
            try {
                printJob.print();
            } catch (PrinterException pe) {
                System.out.println("Error printing: " + pe);
            }
    }
    public int print(Graphics g, PageFormat pf, int pageIndex) {
        int response = NO_SUCH_PAGE;
        Graphics2D g2 = (Graphics2D) g;
        double pageHeight = pf.getImageableHeight(); //height of printer page
        double pageWidth = pf.getImageableWidth(); //width of printer page
        int totalNumPages = 1;
        // make sure not print empty pages
        if (pageIndex >= totalNumPages) {
            System.out.println(totalNumPages);
            System.out.println(pageIndex);
            response = Printable.NO_SUCH_PAGE;
        } else {
            // shift Graphic to line up with beginning of print-imageable region
            g2.translate(pf.getImageableX(), pf.getImageableY()); 
            // shift Graphic to line up with beginning of next page to print
            g2.translate(0f, -pageIndex * pageHeight);
            
            etikettenMalen(img, g2, pf);
            response = Printable.PAGE_EXISTS;
        }
        return response;
    }
    private void etikettenMalen(Image img, Graphics2D g, PageFormat pf){
        int x, y = (int)pf.getImageableX();
        double scale=(pf.getImageableWidth()/2)/img.getWidth(null);
        int w = (int)(img.getWidth(null)*scale);
        int h = (int)(img.getHeight(null)*scale);
        for (int row = 0; row < 8; row++) {
            x = 0;
            for (int column = 0; column < 2; column++) {
                g.drawImage(img,x,y, (int) (img.getWidth(null)*scale),(int)(img.getHeight(null)*scale) , null);
                x += w;
            }
            y += h;
        }
    }
    public static void main(final String[] args){
        new PrintPanel(new File("c:\\etikette.JPG")).setVisible(true);
    }
    private JButton printBtn;
    private JToggleButton toggleButton;
}
 

spong3bob

Aktives Mitglied
schon fast perfekt :D
nur schneidet er mir links a bissl was ab (nur ganz wenig) und rechts a bissl was ab und unten a bissl was ab ...
wenigstens oben passts :D
das links und rechts is nur sehr wenig, das unten wieder ~ 0.5 cm....
kann man das auch noch irgendwie hinkriegen?

Edit:
hab mich a bissl gspielt, jetzt schneidet er nurnoch unten was ab..
(die letzten 2 bilder sind nicht komplett) ansonsten PERFEKT!
wenn das nicht zu lösen ist mach ich einfach nur 14 bilder...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M html-seite drucken (gerendert) Java Basics - Anfänger-Themen 3
T DamagedFontException beim drucken Java Basics - Anfänger-Themen 3
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
U Drucken.. Birt vs Jasper Java Basics - Anfänger-Themen 1
H Drucken auf Drucker Java Basics - Anfänger-Themen 8
B Drucken mit einem Terminal / Bon Printer Java Basics - Anfänger-Themen 4
B HTML Code drucken Java Basics - Anfänger-Themen 4
B Drucken: Default Paper von Drucker? Mein Drucker druckt falsch Java Basics - Anfänger-Themen 3
B Drucken in JAVA -> nicht "Java printing" Java Basics - Anfänger-Themen 3
D Erste Schritte HTML aus JEditorPane drucken Java Basics - Anfänger-Themen 5
I Drucken in Java / verschiedene Papierformate Java Basics - Anfänger-Themen 0
I Drucken (Print) monitoren Java Basics - Anfänger-Themen 0
I Erste Schritte Drucken in JAVA / Druckaufträge etc. Java Basics - Anfänger-Themen 15
T Drucken mit Java Java Basics - Anfänger-Themen 16
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
E Input/Output png Auf Dymo 450 drucken Java Basics - Anfänger-Themen 2
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
C Drucken/Druckdesign mit Java Java Basics - Anfänger-Themen 8
J checkbox status abfragen und drucken Java Basics - Anfänger-Themen 13
K doppeltes paint beim Drucken Java Basics - Anfänger-Themen 8
B Source Code "in einem Rutsch" drucken in Eclipse Java Basics - Anfänger-Themen 5
K Drucken Java Basics - Anfänger-Themen 8
G Mit Java Drucken Java Basics - Anfänger-Themen 11
O OOP prindata Methode aufrufen!? Methode drucken + Konstruktor Java Basics - Anfänger-Themen 9
G DRUCKEN von z.B. eines JFrame über print(Graphics g) Java Basics - Anfänger-Themen 9
K einfaches Drucken von Text (und ggf Bildern,gemischt) Java Basics - Anfänger-Themen 11
N barbecue Barcodes drucken Java Basics - Anfänger-Themen 5
H Bericht drucken Java Basics - Anfänger-Themen 4
T [Minimalprogramm] mit Java Drucken Java Basics - Anfänger-Themen 6
L drucken mit DocPrintJob Java Basics - Anfänger-Themen 3
R Drucken mithilfe eines Externen ActionListeners Java Basics - Anfänger-Themen 17
S Inhalt von GUI-Eingabe drucken Java Basics - Anfänger-Themen 7
I PDF aus JSF - Seite drucken mit iText Java Basics - Anfänger-Themen 5
J JTable Drucken Java Basics - Anfänger-Themen 3
J mit COM-Port drucken Java Basics - Anfänger-Themen 8
R mehrseitiges Drucken Java Basics - Anfänger-Themen 3
J Listen - Anzahl positiver Werte drucken Java Basics - Anfänger-Themen 8
H Papierschacht beim Drucken ansprechen Java Basics - Anfänger-Themen 4
T Drucken von Listen bestehend aus Grafik und Text (unter swing) Java Basics - Anfänger-Themen 7
A JTree drucken Java Basics - Anfänger-Themen 2
M html datei drucken Java Basics - Anfänger-Themen 18
E BufferedImage drucken Java Basics - Anfänger-Themen 3
K Drucken mit PrinterJob Java Basics - Anfänger-Themen 3
andresendo Drucken Java Basics - Anfänger-Themen 2
D Drucken - Seite leer Java Basics - Anfänger-Themen 2
S Drucken mit iText? Java Basics - Anfänger-Themen 7
T Formular drucken! Java Basics - Anfänger-Themen 2
S Drucken in farbe Java Basics - Anfänger-Themen 4
G Problem mit Drucken Java Basics - Anfänger-Themen 2
G Strings drucken Java Basics - Anfänger-Themen 2
N Im Querformat drucken mit PrintJob Java Basics - Anfänger-Themen 4
Z Drucken eines JTables mit Text drüber Java Basics - Anfänger-Themen 6
S ich komm mit dem drucken nich klar Java Basics - Anfänger-Themen 17
B Formatierung beim Drucken Java Basics - Anfänger-Themen 4
D Drucken Java Basics - Anfänger-Themen 3
M Drucken Java Basics - Anfänger-Themen 2
B RTF erstellen und drucken Java Basics - Anfänger-Themen 3
G Drucken mit PrintJob oder PrinterJob? Java Basics - Anfänger-Themen 4
F Drucken einer Text Datei Java Basics - Anfänger-Themen 2
M Probleme beim Drucken Java Basics - Anfänger-Themen 4
R String drucken Java Basics - Anfänger-Themen 3
G Drucken von pdf Dokumenten mit Lücken Java Basics - Anfänger-Themen 2
J Drucken von files Java Basics - Anfänger-Themen 4
D Drucken ohne Dialogfeld Java Basics - Anfänger-Themen 2
E HTML Datei drucken Java Basics - Anfänger-Themen 4
G drucken: genaues positionieren Java Basics - Anfänger-Themen 2
R rechtsbündiges Drucken Java Basics - Anfänger-Themen 2
G Drucken Java Basics - Anfänger-Themen 2
D PDF Dokument drucken Java Basics - Anfänger-Themen 10
S verständnisproblem drucken Java Basics - Anfänger-Themen 11
J Serienbrief drucken Java Basics - Anfänger-Themen 2
A Drucken mit Java über FOP Java Basics - Anfänger-Themen 9
B Bilder drucken Java Basics - Anfänger-Themen 4
M Formatiert Drucken in Java Java Basics - Anfänger-Themen 3
A Drucken und Vorschau Java Basics - Anfänger-Themen 4
F Java-Logo drucken Java Basics - Anfänger-Themen 2
S Noch ungelöst ! Klasse JTable und Klasse Drucken verknüpfen. Java Basics - Anfänger-Themen 8
M DATEI DRUCKEN ????? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben