2015-05-26 106 views
0

我在嘗試打印「.pdf」時遇到問題。我用這個代碼打印字符串沒有問題,但PDF不會。打印「.pdf」文件 - PrinterJob

我的程序用pdf接收一個byte []並打印出來,我想錄制一個tempfile來從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