1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
public class ImpressionPDF
{
/**
* Constructeur permettant d'initialiser et de lancer l'application
*
* @param pdf = chemin du pdf à imprimer
* @param messages = attribut permettant de connaître la langue courante
* @param config = attribut permettant de connaître la configuration de l'utilisateur
*/
public ImpressionPDF (String pdf, ResourceBundle messages,Configuration config)
{
/**
* chemin d'"acrobat"
*/
// final String PATH_ADOBE_READER = "C:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe";
final String PATH_ADOBE_READER = new LectureFichier("./../config/acrobat.txt").contenu();
final String ADOBE_READER_PRINT_COMMAND = "/t";
final String SLASH = "/";
final String QUOTE = "\"";
final String SPACE = " ";
final String pFile =pdf;
/**
* localisation de l'imprimante par défaut.
*/
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
/**
* Commande à exécuter ouvre acrobat et lance une impression
*/
String lCommand = QUOTE + PATH_ADOBE_READER + QUOTE + SPACE +
ADOBE_READER_PRINT_COMMAND + SPACE +
QUOTE + pFile + QUOTE + SPACE +
QUOTE + service.getName() + QUOTE;//service.getName() c'est l'imprimante par defaut
Process lAdobeProcess = null;
try
{
/**
* commande système
* Execute Adobe Reader command "/t" (imprime et ferme)
*/
lAdobeProcess = Runtime.getRuntime().exec(lCommand);
/**
* permet de garder acrobat ouvert pendant un laps de temps suffisant pour que acrobat ait le temps de se
* charger et d'ouvrir le fichier "pdf"
*/
File fichier=new File(pdf);
int dodo=(int) (fichier.length()/10);
Thread.sleep((int) (fichier.length()));
lAdobeProcess.destroy();
JLabel txt=new JLabel(messages.getString("boiteDialogue5"));
txt.setFont(config.getCss());
txt.setForeground(config.getCouleur());
txt.setBackground(config.getCouleurFond());
JOptionPane.showMessageDialog(new JFrame(),txt, messages.getString("boiteDialogueTitre5"),1);
}
catch (Exception e)
{
JLabel txt=new JLabel(messages.getString("boiteDialogue6"));
txt.setFont(config.getCss());
txt.setForeground(config.getCouleur());
txt.setBackground(config.getCouleurFond());
JOptionPane.showMessageDialog(new JFrame(),txt, messages.getString("boiteDialogueTitre6"),1);
/**
* enregistrement de l'erreur dans le fichier de log exception
*/
new LogException("../logException.log","client","Impression","ImpressionPDF","ImpressionPDF",e.toString()).enregistrementLog();
}
finally
{
if (lAdobeProcess != null)
{
/**
* destruction de l'instance de Acrobat Reader
*/
lAdobeProcess.destroy();
lAdobeProcess = null;
}
}
}
} |
Partager