2012-12-24 5 views
0

Existe-t-il un sdk commun, une bibliothèque, etc. qui peut connecter un téléphone ou un onglet à n'importe quelle imprimante (n'importe quel ordinateur) via le wifi et capable d'imprimer le pdf? Je ne veux pas utiliser l'application comme epson iprint parce que je dois l'intégrer et l'impression en nuage n'est pas une option?Impression de pdf dans android

+0

Avez-vous déjà une solution? – Ajit

Répondre

2

Je recherche également la solution pour imprimer le pdf de mon application sur l'imprimante de matrice d'Epson. Vous pouvez essayer ce code, ce code fonctionne bien pour imprimante laser réseau 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

Nous avons un gros problème avec l'impression PDF à partir d'Android. Android n'a presque pas de pilotes pour les imprimantes.

Ce code ouvre le flux sur une certaine socket où l'imprimante se connecte. Nous avons une grande et bonne imprimante laser HP et avec ce code, le fichier PDF s'imprime bien. Mais nos utilisateurs n'ont pas de bonnes imprimantes :)

Maintenant, nous utilisons PDF comme aperçu avant impression, mais pour l'impression, nous utilisons du texte avec la séquence d'impression. Cette approche pour créer un document peut être très difficile. Vous devez créer un fichier texte avec la séquence d'impression de votre imprimante, puis, vous pouvez avec ce code mis à l'imprimante:

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

Vous pouvez ajouter des balises (comme HTML) dans votre fichier texte et avant le texte envoyé à l'imprimante, vous peut remplacer les étiquettes avec la séquence:

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

J'ai lu (ne pas essayer) que peut-être si vous PDF (image) pouvez convertir en PostScript et envoyé le fichier PostScript sur l'imprimante et si peut-être PostScript de support d'imprimante PDF imprimera bien. Aussi je vois que peut-être GhostScript peut aider à convertir. Bonne chance :)