So drucken Sie von strings mit Zeilenumbruch in java
Brauche ich, um eine Zeichenfolge zu drucken, die mit java, so dass ich gern die folgende Lösung Nach gegoogelt viel. Ich habe getan, einige Veränderungen zu drucken die Zeichenfolge ohne einen Druck-dialog. Mein problem ist, obwohl diese Methode druckt den string richtig ist es nicht, bricht die Zeilen, auf die ich definiert haben. Bitte sagen Sie mir, wie print-strings mit Zeilenumbrüchen.
public class PrintBill implements Printable {
private static final String mText = "SHOP MA\n"
+ "----------------------------\n"
+ "Pannampitiya\n"
+ "09-10-2012 harsha no: 001\n"
+ "No Item Qty Price Amount\n"
+ "1 Bread 1 50.00 50.00\n"
+ "____________________________\n";
private static final AttributedString mStyledText = new AttributedString(mText);
static public void main(String args[]) throws PrinterException {
PrinterService ps = new PrinterService();
PrintService pss = ps.getCheckPrintService("Samsung-ML-2850D-2");//get the printer service by printer name
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setPrintService(pss);
Book book = new Book();
book.append(new PrintBill(), new PageFormat());
printerJob.setPageable(book);
try {
printerJob.print();
System.out.println(printerJob.getPrintService().getName());
System.out.println("Print compleated..");
} catch (PrinterException exception) {
System.err.println("Printing error: " + exception);
exception.printStackTrace();
}
@Override
public int print(Graphics g, PageFormat format, int pageIndex) {
Graphics2D g2d = (Graphics2D) g;
g2d.translate(format.getImageableX(), format.getImageableY());
g2d.setPaint(Color.black);
Point2D.Float pen = new Point2D.Float();
AttributedCharacterIterator charIterator = mStyledText.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();
float dx = layout.isLeftToRight() ? 0 : (wrappingWidth - layout.getAdvance());
layout.draw(g2d, pen.x + dx, pen.y);
pen.y += layout.getDescent() + layout.getLeading();
}
return Printable.PAGE_EXISTS;
}
}
Drucker-service-providing-Klasse
public class PrinterService {
public PrintService getCheckPrintService(String printerName) {
PrintService ps = null;
DocFlavor doc_flavor = DocFlavor.STRING.TEXT_PLAIN;
PrintRequestAttributeSet attr_set =
new HashPrintRequestAttributeSet();
attr_set.add(new Copies(1));
attr_set.add(Sides.ONE_SIDED);
PrintService[] service = PrintServiceLookup.lookupPrintServices(doc_flavor, attr_set);
for (int i = 0; i < service.length; i++) {
System.out.println(service[i].getName());
if (service[i].getName().equals(printerName)) {
ps = service[i];
}
}
return ps;
}
}
Haben Sie versucht
Versuchen Sie es mit
Keppil - es funktioniert nicht.
Ich denke, wir müssen überprüfen Sie die print-Methode
\r\n
statt \n
?Versuchen Sie es mit
StringBuilder
und verwenden append
Methode.Keppil - es funktioniert nicht.
Ich denke, wir müssen überprüfen Sie die print-Methode
InformationsquelleAutor Harsha | 2012-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun auf diese Weise:-
Dies funktioniert im online-Druck, nicht aber beim senden an einen Drucker.
InformationsquelleAutor Siva Charan
OK, endlich habe ich eine gute Lösung gefunden für meine Rechnung drucken Aufgabe und es funktioniert für mich.
Diese Klasse stellt den print service
Diese Klasse demonstriert die Rechnung drucken Aufgabe,
InformationsquelleAutor Harsha
Sollte diese Arbeit.
InformationsquelleAutor optional
InformationsquelleAutor Prajeet Naga
Können Sie versuchen, mit
StringBuilder
: -@Harsha.. :(...
Welche Probleme sind Sie konfrontiert??
InformationsquelleAutor Rohit Jain
Ich glaube, Sie machen es zu kompliziert. AttributedString verwendet wird, wenn Sie speichern möchten, und Attribute - in Druck-Kontext. Aber Sie sind die Speicherung von Daten im inneren. AttributedString
Einfach haben, speichern Sie Ihre Daten in das Dokument-Objekt, und übergeben Sie Eigenschaften wie Schriftart, Fett, Kursiv, alles in AttributedString.
Hoffe, dass dies hilfreich sein
Ein schnelles tutorial Und
In der Tiefe tutorial
InformationsquelleAutor Ravi A
Verwendung von String-Puffer.
das wird nicht funktionieren
InformationsquelleAutor Amit
InformationsquelleAutor Yasiru Sachintha