Je développe le module de facturation dans mon application en Java (framework Struts2). Après la soumission réussie du formulaire de facture, mon code génère le PDF de la facture. Ce que je veux mettre en œuvre est, sur la soumission de formulaire de facture réussie et sur la génération de PDF réussie, le PDF généré devrait imprimer à partir de l'imprimante. J'ai écrit le code pour l'impression PDF, mais le problème ici est, par ce code, il est seulement possible d'imprimer le fichier PDF à partir de la même machine où l'application est déployée et l'imprimante est connectée. Mais cela ne va pas être l'architecture après la fin de l'application. Il y aura une architecture client-serveur, où mon application sera déployée sur un serveur et de nombreux clients utiliseront cette application à partir de leurs machines respectives.Java code imprimer le fichier PDF de la machine cliente
Donc le problème ici est, chaque autre machine est connectée à différentes imprimantes et par mon code actuel, il est seulement possible d'imprimer le PDF à partir de l'endroit où l'application est déployée, dans ce cas, le serveur.
Maintenant, ma question est ici:
Est-il possible d'obtenir une impression de PDF, dans un tel scénario, en utilisant Java, je veux dire, l'impression PDF à partir de l'imprimante qui est connectée à la machine cliente respective?
Si oui, comment ferais-je cela?
Voici mon extrait de code:
import java.io.FileInputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.Sides;
public class PDFPrintDemo {
public static void main(String[] args) {
try {
System.out.println("Printing PDF demo using JAVA.");
DocFlavor docFlavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE;
PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
attributeSet.add(Sides.ONE_SIDED);
attributeSet.add(new Copies(2));
PrintService[] printServices = PrintServiceLookup
.lookupPrintServices(docFlavor, attributeSet);
if (printServices.length == 0) {
System.out.println("No printer found...");
}
PrintService myService = null;
for (PrintService service : printServices) {
System.out.println("Connected printer name is :: "
+ service.getName());
if (service.getName().equals(
"Hewlett-Packard-HP-LaserJet-Pro-MFP-M126nw")) {
myService = service;
break;
}
}
FileInputStream inputStream = new FileInputStream(
"/home/roshan/Downloads/rudhiraBillDemo.pdf");
Doc pdfDoc = new SimpleDoc(inputStream,
DocFlavor.INPUT_STREAM.AUTOSENSE, null);
DocPrintJob printJob = myService.createPrintJob();
printJob.print(pdfDoc, attributeSet);
inputStream.close();
System.out.println("PDF printed successfully..");
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
Merci. Donc, si je veux y arriver, comment puis-je faire cela en utilisant Java Applet? Je veux dire est-il possible de migrer cela dans mon cadre Struts2? –
Vous avez besoin d'une applet qui lit une donnée depuis un 'url' et l'imprime, que' url' pourrait être une action struts. Ici pourrait être une solution de haut niveau, écrire une applet qui peut accéder à l'imprimante et imprimer, créer une action struts qui sort un fichier pdf, appelez l'action struts (ouvrir l'url) obtenir le fichier PDF l'envoyer à l'imprimante –