Olá pessoal…
estou procurando na net… mas não encontro nada sobre tal assunto…
eh o seguinte… um exemplo… tenho esse pedaço de codigo
Document document = new Document();
try {
PdfWriter.getInstance(document, new FileOutputStream("C://PDF_LinhaCodigo.pdf"));
document.open();
// adicionando um parágrafo ao documento
document.add(new Paragraph("Exemplo Geração de Arquivo PDF via iText - Java"));
} catch(DocumentException de) {
System.err.println(de.getMessage());
} catch(IOException ioe) {
System.err.println(ioe.getMessage());
}
document.close();
se eu quizer mandar imprimir direto esse aquivo PDF… como q eu faço para imprimi-lo…???
estou utilizando o seguinte método para imprimir
public synchronized boolean imprime(String texto) {
try {
DocPrintJob dpj = impressora.createPrintJob();
InputStream stream = new ByteArrayInputStream(texto.getBytes());
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(stream, flavor, null);
dpj.print(doc, null);
return true;
} catch (PrintException e) {
e.printStackTrace();
}
return false;
}
porem nesse metodo seta para impressão um InputStream, porem não encontrei nenhum metodo de objetos relacionados ao pdf q me devolva um InputStream ou coisa do tipo… : /
agradeço a ajuda desde já…
Não conheço essa API, mas como sugestão…
Ao invés de passar um FileOutputStream para PdfWriter.getInstance, passe um ByteArrayOutputstream, e pegue posteriormente o conteúdo em bytes.
Veja se funciona e posta aí pra galera.
Abraço,
Armando
não funciona… não eh aceito esse tipo de parametro no getInstance…
[]'s… estou quase resolvendo creio eu ! hehehehe…
mudei um poko o metodo de impressão… agora eu passo o caminho do arquivo pdf… e falo q o arquivo q será impresso… EH um pdf…
veja o codigo…
public synchronized boolean imprime(String caminho) throws PrintException {
// se nao existir impressora, entao avisa usuario
// senao imprime texto
if (impressora == null) {
String msg = "Nennhuma impressora foi encontrada. Instale uma impressora padrão \r\n(Generic Text Only) e reinicie o programa.";
System.out.println(msg);
} else {
try {
DocPrintJob dpj = impressora.createPrintJob();
DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;
FileInputStream file;
file = new FileInputStream("C://Comprovante_20061221.pdf");
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(file, flavor, das);
dpj.print(doc, null);
return true;
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
return false;
}
mas ele apresenta outro erro:
sun.print.PrintJobFlavorException: invalid flavor
at sun.print.Win32PrintJob.print(Win32PrintJob.java:312)
at com.br.impressao.Impressao.imprime(Impressao.java:93)
at ExemploBancoBrasil.main(ExemploBancoBrasil.java:91)
alguem jah viu esse erro ?!?!?
agradeço desde já…
Pelo javadoc aceita sim…
[quote]getInstance
public static PdfWriter getInstance(Document document,
OutputStream os)
throws DocumentException
Gets an instance of the PdfWriter.
Parameters:
document - The Document that has to be written
os - The OutputStream the writer has to write to.
Returns:
a new PdfWriter
Throws:
DocumentException - on error
[/quote]
Ou seja, o método getInstance recebe um OutputStream, que pode ser um ByteArrayOutputStream. Tenta assim:
ByteArrayOutputStream output = new ByteArrayOutputStream();
PdfWriter.getInstance(document, output);
//Aqui vem a geração do seu PDF
...
DocPrintJob dpj = impressora.createPrintJob();
InputStream stream = new ByteArrayInputStream(output.getBytes());
Vê aí que bicho dá… é melhor do que gravar um arquivo inútil, que você vai ter que ficar controlando…
Abraço,
Armando
Olá… Bom di a todos…
mesmo eu fazendo isso como foi sugerido pelo Armando… o metodo ficaria assim…
public synchronized boolean imprime(ByteArrayOutputStream output) throws PrintException {
// se nao existir impressora, entao avisa usuario
// senao imprime texto
if (impressora == null) {
String msg = "Nennhuma impressora foi encontrada. Instale uma impressora padrão \r\n(Generic Text Only) e reinicie o programa.";
System.out.println(msg);
} else {
DocPrintJob dpj = impressora.createPrintJob();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
FileInputStream file;
InputStream stream = new ByteArrayInputStream(output.toByteArray());
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(stream, flavor, das);
dpj.print(doc, null);
return true;
}
return false;
}
e a chamada desse metódo ficaria assim:
Document document = new Document();
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
String arquivo = "arquivo.pdf";
PdfWriter.getInstance(document, output);
document.open();
// adicionando um parágrafo ao documento
document.add(new Paragraph("Exemplo Geração de Arquivo PDF via iText - Java"));
} catch(DocumentException de) {
System.err.println(de.getMessage());
}
document.close();
try {
impressao.imprime(output);
} catch (PrintException ex) {
ex.printStackTrace();
}
ele imprime… mas não imprime absolutamente nada do q tem ser impresso… imprime um monte de código… como se fosse erro da impressora…
se eu encontrar a solução estarei avisando… e fico aguardando sugestões…
Olá…
podem me ajudar como converto um arquivo pdf para um arquivo postScript em Java??? pois na internet achei q esse eh o unico meio de fazer a impressão
obrigado
agradeço desde já…