Avatar billede krestenbanke Nybegynder
11. juni 2004 - 00:08 Der er 9 kommentarer og
1 løsning

Print for dummies

Skal have udskrevet noget tekst til en printer, men aner ikke med hvad jeg skal starte.

I første omgang er det blot en tekst-streng der skal skrives ud, senere både sort/hvid-grafik og tekst...

Er der én der kan give en intro til hvor der skal startes, og hvilke klasser der skal bruges, implementeres etc...
Avatar billede arne_v Ekspert
11. juni 2004 - 08:10 #1
Der er 2 print API'er i java:
  java.awt.print
  javax.print
Avatar billede arne_v Ekspert
11. juni 2004 - 08:10 #2
Eksempel på første:

package test;

import java.awt.*;
import java.awt.print.*;

class PrinTest {

    public static void main(String[] args) {
        PrinterJob job = PrinterJob.getPrinterJob();
        Book bk = new Book();
        bk.append(new Printable() {
            public int print(Graphics g, PageFormat page, int index) {
                page.setOrientation(PageFormat.LANDSCAPE);
                g.drawString("Dette er en test", 100, 100);
                g.drawString("Dette er en test", 200, 200);
                return 0;

            }
        }, job.defaultPage());
        job.setPageable(bk);
        if (job.printDialog()) {
            try {
                job.print();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

}
Avatar billede krestenbanke Nybegynder
11. juni 2004 - 11:46 #3
Har ikke prøvet det endnu, men det ser lovende ud!
Har dog lige et par spørgsmål til koden, for lige at få afklaret hvad der rent faktisk sker...

Man laver et PrinterJob (hvorfor getPrinterJob() i stedet for new PrinterJob() )

Derefter laves en Book og til denne "forlænger" appender man det, som man ønsker at udskrive. Laver grafiken g, og sætter format og bounds for denne...
Hvorfor job.defaultPage() ?
Går ud fra at job.setPageable(bk) er for at skrive "hele" sider ud fra bogen, således at printeren ved hvor den skal stoppe??
Avatar billede krestenbanke Nybegynder
11. juni 2004 - 12:28 #4
Hvordan kan det desuden omskrives så jeg kan give en String med i constructoren?

ex:

PrinTest(String bla) {


og senere:

g.drawString(bla, 100,100)

Skriver jeg ovenstående nu får jeg: Cannot refer to a non-final variable bla inside an inner class.
Avatar billede arne_v Ekspert
11. juni 2004 - 21:36 #5
Erstat den inner class med en ægte klasse som extender Printable og som
du kan sende argumenter med over i constructor.
Avatar billede arne_v Ekspert
11. juni 2004 - 21:37 #6
Og jeg har iøvrigt ikke arbejdet meget med det.

:-(
Avatar billede arne_v Ekspert
11. juni 2004 - 21:39 #7
Med hensyn til constructor versus getPrinterJob er docs ret klare:

public PrinterJob()

    A PrinterJob object should be created using the static getPrinterJob method.

ublic static PrinterJob getPrinterJob()

    Creates and returns a PrinterJob which is initially associated with the default printer.
Avatar billede arne_v Ekspert
11. juni 2004 - 21:43 #9
For det alternative approach (javax.print) se:

http://javaalmanac.com/egs/javax.print/pkg.html
Avatar billede krestenbanke Nybegynder
12. juni 2004 - 01:13 #10
Alletiders!

Takker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester