Bonjour,
Ce code va vous permetre d'imprimer un Fichier RTF ou DOC.
Mais avant cela il va faloir vous munire d'une librairie gratuite.
http://danadler.com/jacob/
Cette librairie va vous permettre d'utilisé les ocx de windows, et dans mon cas celle de word.
Aller sur ce amusé vous bien!
Source / Exemple :
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/*
*
- TODO Imprime un fichier RTF ou DOC en tache de fond
- /
/**
*
public class ImpressionRTF {
public static void main(String[] args) {
String Chemin = "c:\\monDossier\\MonDocRtfOuDoc.rtf";
// initialisation du composant ActiveX de Word
ActiveXComponent Wd = new ActiveXComponent("word.Application");
//Récupération de l'impprimante pas défaut
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
//fait tourner word en tache de fond
Wd.setProperty("Visible", new Variant(false));
//empèche des l'affichage de message à louverture du fichier
Wd.setProperty("DisplayAlerts", new Variant(false));
//définition du type de document
Object Doc = Wd.getProperty("Documents").toDispatch();
//ouverture du fichier désigné par le chemin
Object doc = Dispatch.call(Doc, "Open", Chemin).toDispatch();
//récupération du Dispatch du document actif
Object mydoc = Dispatch.get(Wd, "ActiveDocument").toDispatch();
//deffinition de l'impression
Dispatch.put(Wd, "ActivePrinter", service.getName());
//impression du document
Variant t = new Variant(true);
Variant f = new Variant(false);
Dispatch.callN(mydoc, "PrintOut", new Variant[] {t});
try {
//le tread dort pendant 3min afin que word puisse charger les fichiers en impression
//3mimute c'est pour le gros fichier environ 130pages
Thread.sleep(240000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//fermeture silentieuse de word
Variant toto =new Variant(false);
Wd.invoke("Quit", new Variant[] {toto});
System.out.println("c'est bon c'est fermé!");
}
}
12 mai 2008 à 09:22
j'ai un pb avec l'ocx jacob.dll j'arrive pas a le faire entre dans la base de registre je fait :
regsvr32 C:\WINDOWS\system32\jacob.dll
il affiche qu'il a etait chargé mais ne trouve pas le point d'entrée a DllRegistreServer, je ne comprend riens.
aide !!
merci.
10 juil. 2007 à 08:47
J'ai un petit pb lors de la définition du type de document :
Object Doc = Wd.getProperty("Documents").toDispatch();
Exception levée :
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Documents
Description: An unknown COM error has occured.
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.activeX.ActiveXComponent.getProperty(ActiveXComponent.java)
Je pense que cela vient de l'enregistrement de la dll jacob.dll, je pense qu'elle n'est pas enregistrée correctement, car lorsque j'essaie de l'enregistrer j'ai le message d'erreur suivant :
"jacob.dll a été chargé mais le point d'entrée DllRegisterServer est introuvable"
Je désespére un peu, quelqu'un aurait-il une solution ???
Par avance merci
14 juin 2006 à 10:22
Une petite chose ... plutot que d'attendre 3 min on peut remplacé le code
try {
//le tread dort pendant 3min afin que word puisse charger les fichiers en impression
//3mimute c'est pour le gros fichier environ 130pages
Thread.sleep(240000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
par celui ci :
for (int done 1; done > 0; done Dispatch.get(Wd, "BackgroundPrintingStatus").toInt())
{
try
{Thread.sleep(500);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.println("Je dors...");
}
System.out.println("Je me réveille...");
2 mars 2005 à 10:50
Bon le truck c'est de passer le RTF en PDF avec une librairie qui s'appel iText (je crois) puis d'imprimer le pdf!
c'est une autre solution.
24 févr. 2005 à 21:05
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.