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
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);
}
}