2012-12-24 5 views
0

Есть ли общий sdk, library и т. Д., Который может подключать телефон или вкладку к любому принтеру (любой компонент) через Wi-Fi и распечатать PDF? Я не хочу использовать приложение, например, epson iprint, потому что мне нужно его интегрировать, а облачная печать - это не вариант?Печать pdf в android

+0

У вас есть решение? – Ajit

ответ

2

Я также искал решение для печати PDF из своего приложения на матричном принтере Epson. Вы можете попробовать этот код, этот код хорошо работает для сетевого лазерного принтера 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

У нас есть большая проблема с печатью PDF с Android. 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 может помочь преобразовать. Удачи :)