Avatar billede martinbk Nybegynder
05. maj 2004 - 12:55 Der er 1 kommentar og
1 løsning

Printe String på papir

hejsa, jeg sad og fik en tosset idé om at jeg ville lave nogle små udskrifter til min printer, jeg søgte lidt på E fandt ikke rigtig noget, kiggede lidt i javadoc på javax.print men synes ikke umiddelbart jeg fandt noget direkte brugbart, det jeg kunne ønske mig var en statisk funktion som kan kaldes direkte med en streng som argument der så skrives ud på papir, skal helst være med look up af printservices ved hver kald til metoden


håber nogen har et eksempel jeg evt. kan lege lidt med
Avatar billede martinbk Nybegynder
05. juni 2004 - 22:22 #1
ikke meget gang i det her spm.
Avatar billede backupmand Nybegynder
10. juni 2004 - 17:15 #2
Jeg sidder selv at leger med det i øjeblikket. Her er et kørende eksempel, men vær opmærksom på, at det ikke er sikkert at hele strengen er synlig fordi jeg sidder og roder med margin på papiret i øjeblikket. Det er nogle værdier, du sætter i PageFormat objektet, som skal føres videre til din print-metode, som skal være i den klasse, der implementerer printable interfacet. Jeg forsøger i øjeblikket at bryde venstre margin ned fordi jeg skal printe ud i øverste venstre hjørne (og dermed benytte hele papiret og ikke default printable area) .. noget af en opgave. Hvis du finder ud af det, må du gerne maile. Enten her, eller direkte.

Her er der blevet brugt et Book objekt.

/**
  *
  *
  *
  */

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.print.*;
import java.util.*;
import javax.print.*;

/**
  *
  *
  */
 
public class Printing
{
       
        private final static int POINTS_PER_INCH = 72;
   
    //--- Create a new PrinterJob object   
    PrinterJob pj=PrinterJob.getPrinterJob ();
    //--- Create a new book to add pages to
    Book book=new Book();   
    private Vector vec;
    String e="";
       
    public Printing(Vector v,String e)
    {
    this.vec=v;
    this.e=e;
    //--- Add the cover page using the default page format for this print job
    book.append (new OrderPage(),pj.defaultPage());   
    /*PageFormat documentPageFormat=new PageFormat ();
        documentPageFormat.setOrientation (PageFormat.LANDSCAPE);
        book.append (new Document (), documentPageFormat);*/
 
        //--- Tell the printJob to use the Book as the Pageable object
        pj.setPageable (book);
 
        //--- Show the print dialog box. If the user clicks the
        //--- print button, we then proceed to print, else we cancel
        //--- the process.       
          try {
              pj.print();
          } catch (Exception PrintException) {
              PrintException.printStackTrace();
          }
    }   
   
    class OrderPage implements Printable {
   
    public OrderPage()
    {}   
       
    public int print (Graphics g, PageFormat pageFormat, int page) { 
        //--- Create the Graphics2D object
       
        Graphics2D g2d = (Graphics2D) g;
       
       
        //--- Translate the origin to 0,0 for the top left corner
        g2d.translate (pageFormat.getImageableX (), pageFormat.getImageableY ());
        pageFormat.setOrientation(pageFormat.PORTRAIT);
        Paper pap=pageFormat.getPaper();
        pap.setSize(5.5,2000.0);
        pap.setImageableArea(72.0,72.0,57000,57000);
       
       
          //--- Set the default drawing color to black
       
       
        System.out.println("imageablex ="+pageFormat.getImageableX());
        System.out.println("imageableY ="+pageFormat.getImageableY());
        g2d.setPaint (Color.red);
 
          //--- Draw a border around the page
        /*Rectangle2D.Double border = new Rectangle2D.Double (0,0,pageFormat.getImageableWidth(),         
                                                              pageFormat.getImageableHeight ());
                                                              */
        Rectangle2D.Double border = new Rectangle2D.Double (0,0,10,200);                                                             
        //g2d.draw (border);
 
          //--- Print the title
        String titleText="";
        for (int i=0;i<vec.size();i++)
        titleText+=vec.get(i)+" ";
        Font titleFont = new Font ("ms sans serif", Font.PLAIN, 12);
        g2d.setFont (titleFont);

          //--- Compute the horizontal center of the page
          FontMetrics fontMetrics = g2d.getFontMetrics ();
          //double titleX = (pageFormat.getImageableWidth () / 2) - (fontMetrics.stringWidth (titleText) / 2);
          double titleX = (20 / 2); //(fontMetrics.stringWidth (titleText) / 2);
          double titleY = 1 * 2;
                             
          for (int i=1,distance=6;i<vec.size();i++,distance=distance+45)
          g2d.drawString (vec.get(i).toString(),10,distance);         
   
    System.out.println("the height of this paper is ="+pageFormat.getHeight());
    /*Line2D.Double newLine=new Line2D.Double(10,380,500,380);
    g2d.draw (newLine);*/
    g2d.drawString (e,10,15);
    g2d.drawString (vec.get(0).toString(),40,40);
    Font messageFont = new Font ("haettenschweiller", Font.ITALIC, 20);
    g2d.setFont (messageFont);
    g2d.drawString ("teststreng",10,120);

          return (PAGE_EXISTS);
      }       
    }   
   
    public static void main(String[]args)
    {
    Vector v=new Vector();   
    v.add(new String("hejsa"));
    String e="hejsa";
    Printing p=new Printing(v,e);
    }
   
}
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