2015-05-26 5 views
0

У меня возникают проблемы при попытке распечатать «.pdf». Я печатал строки с этим кодом без проблем, но pdf не будет.Печать файла «.pdf» - PrinterJob

Моя программа получает байт [] с pdf и печатает его, я думал о записи временного файла для печати из InputStream, но также не удалось.

Следит код, я использую для печати:

    FileChannel fc = null; 
    ByteBuffer bb = ByteBuffer.wrap(pdf); 
    FileOutputStream fos = null; 
    RandomAccessFile fis = null; 
    try { 
        File Tempfile = File.createTempFile("portfolios-temp", ".pdf"); 

        fos = new FileOutputStream(tempfile); 
        fos.write(pdf); 

        fos.close(); 

        FileInputStream psStream = new FileInputStream(tempfile); 

        DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE; 
        MyDoc doc = new SimpleDoc(psStream, psInFormat, null); 

        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 
        aset.add (new Copies (1)); 
        aset.add (OrientationRequested.PORTRAIT); 
        aset.add (Sides.ONE_SIDED); 
        aset.add (MediaSizeName.ISO_A4); 

        DocPrintJob job printService.createPrintJob =(); 
        try { 
            job.print (myDoc, aset); 
        } Catch (Exception pe) { 
            pe.printStackTrace(); 
        } 
    } [...] 

я получаю службу печати таким образом:

 PrintService printService = null; 
     for(PrintService printServiceCurrent : PrinterJob.lookupPrintServices()) { 
      if(printServiceCurrent.getName().equals(PRINTER_NAME)) { 
       printService = printServiceCurrent; 
       break; 
      } 
     } 

Он отправить команду на принтер, но приходит как не имеет никакого содержания , Я проверил временный файл, и он создается отлично.

Любая идея?

Заранее спасибо.

ответ

0

Прежде всего, вместо

PrintRequestAttributeSet aset HashPrintRequestAttributeSet = new(); 

должно быть

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 

Во-вторых, вы не проверять принтеры, которые могут печатать формат в соответствии с инструкциями в наборе атрибутов.

Проверить эту ссылку для получения более подробной информации:

Java Print Service API

+0

Я добавил код, который я получаю службы печати. Я также исправил код aset. благодаря – Gannis

Смежные вопросы