Avatar billede funkyloonie Nybegynder
21. august 2003 - 21:28 Der er 5 kommentarer og
2 løsninger

Printe tekst

Hej Eksperter. Jeg søger materiale om udprintning af dokumenter i Java. Jeg kan printe alm. txt-dokumenter, men vil gerne prøve at lave dem lidt mere avancerede hvis muligt.

Det jeg gerne vil vide mere om er udskrivning af tekst hvor der er brugt forskellige skrift størrelser og fonte etc... Dvs. lidt mere avancerede udskrifter end "blot" en font og en størrelse.

Andet spg. er om der findes andre tegn lignende "\n" og "\t" til henholdvis linieskift og tabulator?

Andre ideer/tutorials/eksempeler mm. er også velkomne.

Gir 60 points da jeg kan få mange gode svar.
Avatar billede _carsten Nybegynder
21. august 2003 - 21:36 #1
Avatar billede _carsten Nybegynder
21. august 2003 - 21:42 #2
Der var jeg vist for hurtig, når kan udskrive dokumenter
er det her nok mere sagen:

http://developer.java.sun.com/developer/onlineTraining/Media/2DText/fonts.html#find
Avatar billede _carsten Nybegynder
21. august 2003 - 21:58 #3
Avatar billede funkyloonie Nybegynder
21. august 2003 - 22:00 #4
Gode links!

Angående udskrivningen. Udskriften starter når man kalder sin print()-metode. Bør man i sin print metode lægge at hvad der angår font-ændringer mm. eller er der en måde at sende hele den udskrifts-formaterede tekst på til metoden? Jeg er lidt i tvivl om hvordan man bør strukture selve processen med dynamisk tekst/skriftstørrelse fra gang til gang.
Avatar billede _carsten Nybegynder
21. august 2003 - 22:41 #5
Det er ikke et af de områder jeg har udforsket mest
jeg har bare gjort det i print()

Men du kan se en god artikel her

http://www.javaworld.com/isearch?qt=printing&site=javaworld&ms=1&tid=1&st=1&rf=0
Avatar billede aslan Nybegynder
22. august 2003 - 08:30 #6
Her har du et eksempel på 2 klasser, der printer et objekt ud, som jeg fornyligt har lavet.

package Model_Komp;



public class MK_Kartotek
{
    String navn,adresse,postnr,by,kontaktperson,email,hp,levereingsAddresse,tlf,mobil,bank,cvrnr,noter;
    int gruppe,id;
   
    public MK_Kartotek(int id,String navn,String adresse,String postnr,
                      String by,String kontaktperson,String email,
                      String hp,String levereingsAddresse,String tlf,
                      String mobil,String bank,String cvrnr,String noter,int gruppe)
    {
        this.id=id;
        this.navn=navn;
        this.adresse=adresse;
        this.postnr=postnr;
        this.by=by;
        this.kontaktperson=kontaktperson;
        this.email=email;
        this.hp=hp;
        this.levereingsAddresse=levereingsAddresse;
        this.tlf=tlf;
        this.mobil=mobil;
        this.bank=bank;
        this.cvrnr=cvrnr;
        this.noter=noter;
        this.gruppe=gruppe;
       
    }
    public MK_Kartotek()
    {
    }
    public int getId()
    {
        return id;
    }       
    public String getNavn()
    {
        return navn;
    }
    public String getAdresse()
    {
        return adresse;
    }
    public String getPostnr()
    {
        return postnr;
    }
    public String getBy()
    {
        return by;
    }
    public String getKontaktperson()
    {
        return kontaktperson;
    }
    public String getEmail()
    {
        return email;
    }
    public String getHp()
    {
        return hp;
    }
    public String getLevereingsAddresse()
    {
        return levereingsAddresse;
    }
    public String getTlf()
    {
        return tlf;
    }
    public String getMobil()
    {
        return mobil;
    }
    public String getBank()
    {
        return bank;
    }
    public String getCvrnr()
    {
        return cvrnr;
    }   
    public String getNoter()
    {
        return noter;
    }
    public int getGruppe()
    {
        return gruppe;
    }   
   
}

................................................................


/*
* PrintKundeKort.java
*
* Created on 19. august 2003, 12:42
*/

package Funktions_Komp;

import Model_Komp.*;

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

/**
*
* @author  aslan
*/
public class PrintKundeKort implements Printable
{
   
    /** Creates a new instance of PrintKundeKort */
    public PrintKundeKort(MK_Kartotek obj)
    {
        title=new JLabel("Kunde/Kontakt kort");
        firmaObj=obj;
    }
/*   
    public void previewPortrait()
    {
        new PrintPreview(PrintKundeKort.this,"Vis Portræt udskrift",PageFormat.PORTRAIT);
    }
*/   
    public void printData()
    {
        try
        {
            PrinterJob prnJob = PrinterJob.getPrinterJob();
            prnJob.setPrintable(this);
            if (!prnJob.printDialog())
                return;
            maxNumPage = 1;
            prnJob.print();
        }
        catch (PrinterException e)
        {
            e.printStackTrace();
        }
    }
    public int print(Graphics pg, PageFormat pageFormat,int pageIndex) throws PrinterException
    {
        if (pageIndex >= maxNumPage)
            return NO_SUCH_PAGE;
       
        pg.translate((int)pageFormat.getImageableX(),
        (int)pageFormat.getImageableY());
        int wPage = 0;
        int hPage = 0;
        if (pageFormat.getOrientation() == pageFormat.PORTRAIT)
        {
            wPage = (int)pageFormat.getImageableWidth();
            wPage += wPage/5;
            hPage = (int)pageFormat.getImageableHeight();
            hPage += hPage/3;
        }
        else
        {
            wPage = (int)pageFormat.getImageableWidth();
            wPage += wPage/2;
            hPage = (int)pageFormat.getImageableHeight();
            pg.setClip(0,0,wPage,hPage);
        }
        int xPos[] = new int[]
        {
            0,60,200,250,300,350,400
        };
       
        int y = 20;
        int y2 = 10;
       
        pg.setColor(Color.black);
        pg.setFont(new Font("Thorndale",Font.BOLD,16));
        Font fn = pg.getFont();
        FontMetrics fm = pg.getFontMetrics();
        pg.drawString(title.getText(),0, y);
       
        y+=20;
       
        pg.setFont(new Font("Thorndale",Font.PLAIN,10));
        if(firmaObj.getNavn().length()>0)
        {
            pg.drawString(firmaObj.getNavn(),0, y);
            y+=13;
        }
        if(firmaObj.getAdresse().length()>0)
        {
            pg.drawString(firmaObj.getAdresse(),0, y);
            y+=13;
        }
        if(firmaObj.getPostnr().length()>0 || firmaObj.getBy().length()>0)
        {
            pg.drawString(firmaObj.getPostnr()+" "+firmaObj.getBy(),0, y);
            y+=13;
        }
       
        pg.setFont(new Font("Thorndale",Font.BOLD,12));
        pg.drawString("Kontaktperson",300, y2);
        y2+=15;
        pg.setFont(new Font("Thorndale",Font.PLAIN,10));
        pg.drawString("Navn",250, y2);
        pg.drawString("Tlf",350, y2);       
        y2+=5;
        for(int i=0;i<5;i++)
        {
            pg.drawRect(250,y2,90,15);
            pg.drawRect(350,y2,90,15);
            y2+=18;
        }
        y2+=15;

        pg.drawString("Dato",0, y2);
        pg.drawString("Salg",35, y2);
        pg.drawString("Dis",130, y2);
        pg.drawString("Næste besøg",165, y2);
       
        pg.drawString("Dato",230, y2);
        pg.drawString("Salg",265, y2);
        pg.drawString("Dis",360, y2);
        pg.drawString("Næste besøg",395, y2);       
       
        y2+=5;

        for(int i=0;i<12;i++)
        {       
            pg.drawRect(0,y2,30,40);
            pg.drawRect(35,y2,90,40);
            pg.drawRect(130,y2,30,40);
            pg.drawRect(165,y2,60,40);

            pg.drawRect(230,y2,30,40);
            pg.drawRect(265,y2,90,40);
            pg.drawRect(360,y2,30,40);
            pg.drawRect(395,y2,60,40); 
           
            y2+=45;
        }

        System.gc();
        return PAGE_EXISTS;
    }
   
    private int maxNumPage=1;
    private JLabel title;
    private MK_Kartotek firmaObj;
   
}
.....................................................................


Når du kører metoden printData() skulle der meget gerne komme noget print ud :-)
Avatar billede funkyloonie Nybegynder
22. august 2003 - 12:11 #7
ser fint ud. lader spg. stå åbent lidt endnu.
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