Quando eu rodo esse código, em uma impressora MP-4000 TH ela roda perfeitamente a impressao se for um txt. Se for um pdf mesmo que só tenha uma palavra, aparece todo codificado.
Em outra impressora, ela imprime varias paginas em branco.
Segue o código:
package impressao;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
public class PrintPDFFactory {
private static PrintService impressora;
public void printPDF(File f){
try{
DocFlavor dflavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService[] impressoras = PrintServiceLookup.lookupPrintServices(dflavor, null);
for(PrintService ps : impressoras){
System.out.println("Impressora Encontrada: "+ps.getName());
if(ps.getName().contains("Brother HL-3040CN series")){
System.out.println("Impressora Selecionada: "+ps.getName());
impressora = ps;
break;
}
}
DocPrintJob dpj = impressora.createPrintJob();
FileInputStream fis = new FileInputStream(f);
byte[] buffer = new byte[fis.available()];
int buff = 0;
while((buff = fis.available()) != 0){
fis.read(buffer, 0, buff);
}
System.out.println(new String(buffer));
InputStream stream = new ByteArrayInputStream(buffer);
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(stream, flavor, null);
dpj.print(doc, null);
}catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
PrintPDFFactory pdffactory = new PrintPDFFactory();
pdffactory.printPDF(new File("C:/Users/willian/Desktop/teste.docx"));
}
}
Alguem sabe pq?