Есть ли общий sdk, library и т. Д., Который может подключать телефон или вкладку к любому принтеру (любой компонент) через Wi-Fi и распечатать PDF? Я не хочу использовать приложение, например, epson iprint, потому что мне нужно его интегрировать, а облачная печать - это не вариант?Печать pdf в android
ответ
Я также искал решение для печати 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();
}
}
У нас есть большая проблема с печатью 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 может помочь преобразовать. Удачи :)
У вас есть решение? – Ajit