Hejsa!
Jeg vil rigtig gerne ha' printet noget tekst ud, og efter lidt søgen og
higen, er jeg kommet frem til nedenstående kode. Det virker sådanset
fint nok, bortset fra 2 ting:
1) Jeg kan ikke få printeren til at skrive ud i den font, jeg sætter på
Graphics2D objektet. Det kunne jeg godt tænke mig at ændre lidt på...
2) Hvis der er danske karakterer i teksten, sker der ting og sager: æ
kan printes ud, ø bliver til firkanter, og alle f'erne i teksten bliver
skrevet ud med en meget mindre font... ja, du læste rigtigt, f'erne har
et helt andet udseende end de andre bogstaver på printet. Hvad er det
lige der sker?
Det første er klart det vigtigste, da jeg alligevel ikke skal skrive
danske karakterer ud, men det ville være rart, hvis der var en eller
anden der kunne svare på begge spørgsmål.
....
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setPrintable(this);
printerJob.print();
....
public int print(Graphics g, PageFormat format, int pageIndex) {
AttributedString text = new AttributedString(tempText);
Graphics2D g2d = (Graphics2D)g;
// set the font
g2d.setFont(new java.awt.Font("Helvetica", java.awt.Font.PLAIN,
10));
g2d.translate(format.getImageableX(), format.getImageableY());
g2d.setPaint(Color.black);
Point2D.Float pen = new Point2D.Float();
AttributedCharacterIterator charIterator = text.getIterator();
LineBreakMeasurer measurer = new LineBreakMeasurer(charIterator,
g2d.getFontRenderContext());
float wrappingWidth = (float) format.getImageableWidth();
while (measurer.getPosition() < charIterator.getEndIndex()) {
TextLayout layout = measurer.nextLayout(wrappingWidth);
pen.y += layout.getAscent();
layout.draw(g2d, pen.x, pen.y);
pen.y += layout.getDescent() + layout.getLeading();
}
return Printable.PAGE_EXISTS;
}
--
Posted via Mailgate.ORG Server -
http://www.Mailgate.ORG