Okay nu har jeg så gennemlæst 3 forskellige artikler omkring dette emne og fundet frem til en løsning. Det viser sig så at det at udskrive ganske alm. tekst i et bestemt format (UTF-8, UTF-16, ASCII-US osv.) kræver at ens printer understøtter formatet, og her kom det så til min overraskelse at det er de færreste printere som understøtter noget som helst af dette. Så med mindre man har en super sej printer kommer man ikke udenom at skulle udskrive sin tekst som et billede.
Her er en lille stump kode som jeg fandt og modificerede i en af SUN's egent tutorials. Ved kald af metoden printIt() udskriver koden "Hello World!" ti gange og udprinter dokumentet.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.print.*;
import java.util.*;
public class MyPrint implements Printable {
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) { /* We have only one page, and 'page' is zero-based */
return NO_SUCH_PAGE;
}
/* User (0,0) is typically outside the imageable area, so we must
* translate by the X and Y values in the PageFormat to avoid clipping
*/
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
/* Now we perform our rendering */
/* Prints "Hello World!" ten times */
/* ------------------------------- */
int x = 10;
int y = 10;
for( int i = 0; i < 10; i++ ) {
g.drawString("Hello World!", x, y);
y += g.getFont().getSize();
}
/* ------------------------------- */
/* tell the caller that this page is part of the printed document */
return PAGE_EXISTS;
}
public void printIt() {
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
try {
job.print();
}
catch (PrinterException ex) {}
}
}
Hvis i skulle få lyst til at bruge koden skal i vide at den ikke automatisk wrapper til næste side eller næste linie når man ryger ud over margin, derfor bliver man nødt til at gøre koden mere fleksibel så den eks. selv skifter side hvis y-koordinatet går ud over bunden af siden.