Ola estou tendo um problema que esta me dando dor de cabeça, literalmente, tenho um sistema que faz vendas tanto a vista quanto a prazo, porém preciso imprimir os comprovantes para o cliente. Fiz vários códigos diferentes e testei em duas impressoras diferentes, uma multifuncional da samsung e outra simples da HP, na samsung quando mando imprimir a impressão aparece por 1 ou 2 segundos e some sem imprimir nada, na HP a impressão vai para a fila e la fica até que eu cancele, em nenhum caso a impressão sai, nada é impresso, pensei em fazer como IReport mais não sei exatamente como configurar para ficar com a aparência de um pedido ou um recibo. Por Favor preciso muito de uma luz, e saber porque motivo essa impressão não sai, e além disso o código que fiz busca a impressora padrão mais eu queria deixar pré programada a impressora para que cada função seja impressa em uma sem precisar escolher e sem precisar necessariamente ser impresso na padrão, valew desde já, muito obrigado
Não conheço um modo de enviar para impressora em java, mas já vi alguns sistemas fazendo da seguinte forma.
[list]Sistema possui a página html com o que precisa imprimir[/list]
[list]É gerado um PDF por exemplo com o WKHTMLTOPDF da página aberta.[/list]
[list]O usuário agora pode imprimir um pdf que hoje, qualquer impressora reconhece.[/list]
Não sei se ajuda, mas é uma solução plausivel.
É que ajuda ajuda, toda ajuda é bem vinda, na verdade estou quebrando o galho com o iReport, mais para imprimir um cupom não fiscal a melhor forma é enviar um SimpleDoc, o que seria mais rapido
[code]
public String NovaImpressao(String texto){
PrintService [] printService = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.AUTOSENSE, null);
PrintService impressoraPadaro = PrintServiceLookup.lookupDefaultPrintService();
DocFlavor docFlavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
HashDocAttributeSet atributosDocumento = new HashDocAttributeSet();
try {
FileInputStream fileInputStream = new FileInputStream(“C:\Orange Sistema\Gerencia\Venda.rtf”);
Doc documento = new SimpleDoc(fileInputStream, docFlavor, atributosDocumento);
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
PrintService servicoImpressao = ServiceUI.printDialog(null, 300, 400, printService, impressoraPadaro, docFlavor, printRequestAttributeSet);
if(printService != null){
DocPrintJob docPrintJob = servicoImpressao.createPrintJob();
try {
docPrintJob.print(documento, printRequestAttributeSet);
} catch (PrintException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(null, e1);
}
InputStream prin = new ByteArrayInputStream(texto.getBytes());
SimpleDoc impressao = new SimpleDoc(prin, docFlavor, atributosDocumento);
return “Impressão”;
} [/code]
esse é o código que estou tentando usar ele vai para a impressora mais não imprime some da impressora e nunca mais, se alguém puder me dar uma luz agradeço
Seu código está com lixos, por exemplo as linhas 32 e 33, primeiro precisa limpar este código e deixar somente com o necessário.
Não acho que seja o erro mas está faltando a finalização do fileInputStream.
Tente começar com o básico a partir deste blog http://examples.javacodegeeks.com/desktop-java/print/use-printing-service-in-java/
e depois inclua os dialogos e etc…
segue um exemplo do printJob, ele deve te ajudar
[code]
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.PrintJob;
import java.awt.Toolkit;
import java.util.Properties;
import javax.swing.JFrame;
public class PrintSampleApp extends JFrame {
MyCanvas canvas = new MyCanvas();
public static void main(String args[]) {
PrintSampleApp app = new PrintSampleApp();
}
public PrintSampleApp() {
add(“Center”, canvas);
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
String name = “Test print job”;
Properties properties = new Properties();
PrintJob pj = Toolkit.getDefaultToolkit().getPrintJob(PrintSampleApp.this, name, properties);
if (pj != null) {
canvas.printAll(pj.getGraphics());
pj.end();
}
}
}
class MyCanvas extends Canvas {
public void paint(Graphics g) {
Dimension size = getSize();
int width = size.width;
int height = size.height;
int x1 = (int) (width * 0.1);
int x2 = (int) (width * 0.9);
int y1 = (int) (height * 0.1);
int y2 = (int) (height * 0.9);
g.drawRect(x1, y1, x2 - x1, y2 - y1);
g.drawOval(x1, y1, x2 - x1, y2 - y1);
g.drawLine(x1, y1, x2, y2);
g.drawLine(x2, y1, x1, y2);
String text = "Print Me! ";
text += text;
text += text;
g.drawString(text, x1, (int) ((y1 + y2) / 2));
g.dispose();
}
}[/code]