2012-12-24 74 views
0

是否有任何常見的sdk,庫等可以通過wifi連接電話或標籤到任何打印機(任何compony),並能夠打印PDF?我不想使用像epson iprint這樣的應用程序,因爲我必須將它集成,而云打印不是一種選擇?在android中打印pdf

+0

你有沒有解決方案呢? – Ajit

回答

2

我還從Epson矩陣打印機上的應用程序中搜索打印PDF的解決方案。您可以嘗試下面的代碼,該代碼適用於HP網絡激光打印機:

File pdfFile = new File (Environment.getExternalStorageDirectory() + "/testPdf.pdf"); 

Socket clientSocket = null; 
FileInputStream fis; 
BufferedInputStream bis = null; 

try { 
    clientSocket = new Socket("192.168.101.45", 9100); 
} catch (UnknownHostException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

byte [] mybytearray = new byte [(int) pdfFile.length()]; 
try { 
    fis = new FileInputStream(pdfFile); 
    bis = new BufferedInputStream(fis); 
    bis.read(mybytearray, 0, mybytearray.length); 
    OutputStream os = clientSocket.getOutputStream(); 
    os.write(mybytearray, 0, mybytearray.length); 
    os.flush(); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    try { 
     clientSocket.close(); 
     bis.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
0

我們在從Android打印PDF時遇到很大問題。 Android幾乎沒有打印機驅動程序。

此代碼在打印機連接的某個插座上打開流。我們有大而好的HP激光打印機,並且此代碼PDF文件打印效果良好。 但我們的用戶沒有那麼好的打印機:)

現在我們使用PDF打印預覽,但打印我們使用文本與打印機序列打印。這種創建文檔的方法可能非常困難。你必須創建打印順序文本文件爲您的打印機,那麼,你可以使用此代碼設置打印機:

outToServer = new DataOutputStream(clientSocket.getOutputStream()); 
outToServer.writeUTF(stringForPrint); 
outToServer.flush(); 

您可以添加標籤(如HTML)的文本文件,併發送文本打印機之前,您可以用序列代替標籤:

 // bold on 
     text = text.replaceAll("<B>", Character.toString((char)27) + "E"); 
     // bold off 
     text = text.replaceAll("</B>", Character.toString((char)27) + "F"); 

我看過(沒試過),也許,如果你PDF(圖像)轉換成PostScript和發送的PostScript打印機上,如果打印機支持PostScript也許PDF將打印文件好。 另外我認爲,也許GhostScript可以幫助轉換。祝你好運:)