Drucken

  • Themenstarter Themenstarter KlemensyXYZ
  • Beginndatum Beginndatum
K

KlemensyXYZ

Gast
Hallo,

ich habe mir einen kleinen Editor geschrieben um das Drucken auszuprobieren.
Den Code dazu habe ich aus der Java-Insel.
Doch bei mir passiert nichts. Da ich keinen Drucker habe muss ich das ganze ja in ein pdf drucken, doch die Datei, die dabei entstehen müsste, ist nirgens aufzufinden.

Hier die actionPerformed meines Drucken Buttons:
Java:
private void jButton14ActionPerformed(java.awt.event.ActionEvent evt) 
{
        // TODO add your handling code here:
        PrinterJob pjob = PrinterJob.getPrinterJob();
        if (pjob.printDialog() == false)
        {
            return;
        }
        pjob.setPrintable(new TextPrintable());
        pjob.print();
}

und dann noch die Klasse TextPrintable:

Java:
import java.awt.Font;
import java.awt.Graphics;
import java.awt.print.PageFormat;
import java.awt.print.Printable;

class TextPrintable implements Printable
{
    static Font font = new Font ("Times", Font.PLAIN, 20);
    public int print (Graphics g, PageFormat pageFormat, int pageIndex)
    {
        if (pageIndex >= 2)
        {
            return Printable.NO_SUCH_PAGE;
        }
        g.setFont(font);
        g.drawString("Hallo auf Seite " + pageIndex, 100, 100);
        return Printable.PAGE_EXISTS;
    }
}

wo liegt denn mein Fehler?
 
Also ich sehe da auch nichts, wo mal gedruckt wird, du erstellst doch nur ein neues Objekt von Typ Printable. Deine Methode Print macht ja nichts (außer zurückzugeben, ob alles geklappt hat). Aber da drin passiert nichts. Außerdem erwartet diese Methode einen GraphikKontext, den du übergeben musst (ebenso wie ein PageFormat und eine PageNumber).

EDIT: Ich nehme mal an, der Aufruf von super.print(g, pageFormat, pageIndex) muss noch geamcht werden (das eigentliche Drucken), sofern diese Methode nicht abstrakt ist.

EDIT: OOoooh, hab´s gefunden... dein print()-Aufruf bezieht sich ja auf den PrinterJob, nicht auf das Interface PrintAble...😳
Da bekommst du dann also wahrscheinlich alle Informationen her... aber ich sehe immer noch nichts, wo gedruckt wird.
 
Zuletzt bearbeitet:
Also ich sehe da auch nichts, wo mal gedruckt wird, du erstellst doch nur ein neues Objekt von Typ Printable. Deine Methode Print macht ja nichts (außer zurückzugeben, ob alles geklappt hat). Aber da drin passiert nichts. Außerdem erwartet diese Methode einen GraphikKontext, den du übergeben musst (ebenso wie ein PageFormat und eine PageNumber).

EDIT: Ich nehme mal an, der Aufruf von super.print(g, pageFormat, pageIndex) muss noch geamcht werden (das eigentliche Drucken), sofern diese Methode nicht abstrakt ist.

hm seltsamerweise funktioniert das "drucken" in Microsoft OneNote 2010. Hab ich grade mal ausprobiert.
Es wird genau wie es soll
Code:
Hallo auf Seite 0
und
Code:
Hallo auf Seite 1
auf die Seiten geschrieben. Also scheint das drucken durch
Java:
g.drawString("Hallo auf Seite " + pageIndex, 100, 100);
ja soweit zu funktionieren. Nur halt nicht als pdf.
 
Wo wird denn angegeben, dass der Druck in ein PDF gehen soll? Passiert das auf Basis der Nutzereingabe in printDialog()? Mein Wissen über Jobs ist ein bisschen eingerostet...
 
Es öffnet sich diese Fenster, in dem man z.B den Drucker auswählen kann:
yrdjkleb.png

(der Brother Drucker ist leider nicht angeschlossen)

Hier hab ich dann halt Adobe pdf ausgewählt.
 
Das Problem liegt definitiv nicht in deinem Code, sondern wahrscheinlich in der Installation von Adobe. Du kannst es mit einer Neuinstalltion versuchen, aber ich glaube nicht dass das was ändert. Wenn der Sinn des Programms nicht seien soll PDF-Dokumente zu erstellen würde ich empfehlen, einfach den XPS-Drucker von Windoof zu nutzen, oder wenn es PDF sein muss ein Freeware Programm, ich benutze z.B. den PDFCreator.
 
Das Problem liegt definitiv nicht in deinem Code, sondern wahrscheinlich in der Installation von Adobe. Du kannst es mit einer Neuinstalltion versuchen, aber ich glaube nicht dass das was ändert.

damit haste Recht das hat nix gebracht.

Wenn der Sinn des Programms nicht seien soll PDF-Dokumente zu erstellen würde ich empfehlen, einfach den XPS-Drucker von Windoof zu nutzen, oder wenn es PDF sein muss ein Freeware Programm, ich benutze z.B. den PDFCreator.

Ich wollte ja auch pdfs erstellen, aber wenns nicht geht... nunja dann halt nicht.
Taucht der pdfCreator auch da im Druckerauswahlfeld auf?

Wenn du ein x-bleibiges Doukment ganz manuell als PDF druckst, geht das denn?

funktioniert.
Nur halt aus Java heraus nicht.
 

Zurück
Oben