Travailler avec l'impression PDF
Impression d’un fichier PDF sur l’imprimante par défaut en utilisant les paramètres d’imprimante et de page
La classe PdfViewer vous permet d’imprimer un fichier PDF sur l’imprimante par défaut. Vous devez donc créer un objet PdfViewer et ouvrir le PDF en utilisant la méthode openPdfFile(..).
Appelez la méthode printDocument(..) pour imprimer le PDF sur l’imprimante par défaut.
Le code suivant montre comment imprimer un PDF sur l’imprimante par défaut avec les paramètres de l’imprimante et de la page.
public static void PrintingPDFFile() {
// Créer un objet PdfViewer
PdfViewer viewer = new PdfViewer();
// Ouvrir le fichier PDF d'entrée
viewer.bindPdf(_dataDir + "sample.pdf");
// Définir les attributs pour l'impression
viewer.setAutoResize(true); // Imprimer le fichier avec la taille ajustée
viewer.setAutoRotate(true); // Imprimer le fichier avec la rotation ajustée
viewer.setPrintPageDialog(false); // Ne pas produire la boîte de dialogue du numéro de page lors de l'impression
// Créer des objets pour les paramètres d'imprimante et de page et PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// Définir le nom de l'imprimante
printerSettings.setPrinterName("Microsoft Print to PDF");
// Définir la taille de la page (si nécessaire)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// Définir les marges de la page (si nécessaire)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// Imprimer le document en utilisant les paramètres de l'imprimante et de la page
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// Fermer le fichier PDF après l'impression
viewer.close();
}
Afin d’afficher une boîte de dialogue d’impression, essayez d’utiliser l’extrait de code suivant :
public static void PrintingPDFDisplayPrintDialog() {
// Créer un objet PdfViewer
PdfViewer viewer = new PdfViewer();
// Ouvrir le fichier PDF d'entrée
viewer.bindPdf(_dataDir + "sample.pdf");
// Définir les attributs pour l'impression
viewer.setAutoResize(true); // Imprimer le fichier avec la taille ajustée
viewer.setAutoRotate(true); // Imprimer le fichier avec la rotation ajustée
viewer.setPrintPageDialog(true);
// Créer des objets pour les paramètres de l'imprimante et de la page ainsi que PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// Définir la taille des pages (si nécessaire)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// Définir les marges de la page (si nécessaire)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
java.awt.print.PrinterJob pj = java.awt.print.PrinterJob.getPrinterJob();
if (pj.printDialog()) {
printerSettings.setPrinterName(pj.getPrintService().getName());
printerSettings.setCopies((short) pj.getCopies());
// Imprimer le document en utilisant les paramètres de l'imprimante et de la page
viewer.printDocumentWithSettings(pageSettings, printerSettings);
}
// Fermer le fichier PDF après l'impression
viewer.close();
}
Imprimer un PDF sur une Imprimante Virtuelle
Il existe des imprimantes qui impriment sur un fichier. Nous définissons le nom de l’imprimante virtuelle et, par analogie avec l’exemple précédent, nous effectuons les réglages.
public static void PrintingPDFToSoftPrinter() {
// Créer un objet PdfViewer
PdfViewer viewer = new PdfViewer();
// Ouvrir le fichier PDF d'entrée
viewer.bindPdf(_dataDir + "sample.pdf");
// Définir les attributs pour l'impression
viewer.setAutoResize(true); // Imprimer le fichier avec taille ajustée
viewer.setAutoRotate(true); // Imprimer le fichier avec rotation ajustée
viewer.setPrintPageDialog(false); // Ne pas produire la boîte de dialogue du numéro de page lors de l'impression
// Créer des objets pour les paramètres de l'imprimante et de la page et PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// Définir l'imprimante Microsoft Soft Printer
printerSettings.setPrinterName("Microsoft Print to PDF");
// ou Adobe
// printerSettings.setPrinterName("Adobe PDF");
// Définir la PageSize (si nécessaire)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// Définir les Marges de la Page (si nécessaire)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// Imprimer le document en utilisant les paramètres de page et d'imprimante
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// Fermer le fichier PDF après l'impression
viewer.close();
}
Masquer la boîte de dialogue d’impression
Aspose.PDF pour Java vous permet de masquer la boîte de dialogue d’impression. Pour cela, utilisez la méthode getPrintPageDialog.
L’extrait de code suivant vous montre comment masquer la boîte de dialogue d’impression.
public static void PrintingPDFHidePrintDialog() {
// Créer un objet PdfViewer
PdfViewer viewer = new PdfViewer();
// Ouvrir le fichier PDF d'entrée
viewer.bindPdf(_dataDir + "sample.pdf");
// Définir les attributs pour l'impression
viewer.setAutoResize(true); // Imprimer le fichier avec une taille ajustée
viewer.setAutoRotate(true); // Imprimer le fichier avec une rotation ajustée
viewer.setPrintPageDialog(false); // Ne pas produire la boîte de dialogue de numéro de page lors de l'impression
// Créer des objets pour les paramètres d'imprimante et de page et PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// Définir l'imprimante Microsoft Soft Printer
printerSettings.setPrinterName("Microsoft Print to PDF");
// Définir la taille de la page (si nécessaire)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// Définir les marges de la page (si nécessaire)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// Imprimer le document en utilisant les paramètres d'imprimante et de page
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// Fermer le fichier PDF après l'impression
viewer.close();
}
Impression d’un PDF couleur en fichier XPS en niveaux de gris
Un document PDF en couleur peut être imprimé sur une imprimante XPS en niveaux de gris, en utilisant PdfViewer. Pour y parvenir, vous devez utiliser la propriété PdfViewer.PrintAsGrayscale et la définir sur true.
Le code suivant démontre l’implémentation de la propriété PdfViewer.PrintAsGrayscale.
public static void PrintingPDFasGrayscale() {
// Créer un objet PdfViewer
PdfViewer viewer = new PdfViewer();
// Ouvrir le fichier PDF d'entrée
viewer.bindPdf(_dataDir + "sample.pdf");
// Définir les attributs pour l'impression
viewer.setAutoResize(true); // Imprimer le fichier avec une taille ajustée
viewer.setAutoRotate(true); // Imprimer le fichier avec une rotation ajustée
viewer.setPrintAsGrayscale(true);
// Créer des objets pour les paramètres de l'imprimante et de la page ainsi que PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// Définir l'imprimante Microsoft Soft Printer
printerSettings.setPrinterName("Microsoft Print to PDF");
// Définir la taille de la page (si nécessaire)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// Définir les marges de la page (si nécessaire)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// Imprimer le document en utilisant les paramètres de l'imprimante et de la page
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// Fermer le fichier PDF après l'impression
viewer.close();
}
Conversion de PDF à PostScript
La classe PdfViewer offre la possibilité d’imprimer des documents PDF et, avec l’aide de cette classe, nous pouvons également convertir des fichiers PDF en format PostScript. Pour convertir un fichier PDF en PostScript, installez d’abord une imprimante PS et imprimez simplement sur un fichier avec l’aide de PdfViewer.
Le code suivant vous montre comment imprimer et convertir un PDF au format PostScript.
public static void PrintingPDFToPostScript() {
// Créer un objet PdfViewer
PdfViewer viewer = new PdfViewer();
// Ouvrir le fichier PDF d'entrée
viewer.bindPdf(_dataDir + "sample.pdf");
// Définir les attributs pour l'impression
viewer.setAutoResize(true); // Imprimer le fichier avec une taille ajustée
viewer.setAutoRotate(true); // Imprimer le fichier avec une rotation ajustée
viewer.setPrintAsGrayscale(true);
// Créer des objets pour les paramètres de l'imprimante et de page et PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// Définir l'imprimante PostScript
printerSettings.setPrinterName("HP Universal Printing PS (v7.0.0)");
printerSettings.setPrintToFile(true);
printerSettings.setPrintFileName(_dataDir+"result.ps");
// Définir la taille de la page (si nécessaire)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// Définir les marges de la page (si nécessaire)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// Imprimer le document en utilisant les paramètres de l'imprimante et de page
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// Fermer le fichier PDF après l'impression
viewer.close();
}
Vérification du statut du travail d’impression
Un fichier PDF peut être imprimé sur une imprimante physique ainsi que sur le Microsoft XPS Document Writer, sans afficher de boîte de dialogue d’impression, en utilisant la classe PdfViewer. Lors de l’impression de fichiers PDF volumineux, le processus peut prendre beaucoup de temps, de sorte que l’utilisateur ne peut pas être sûr si le processus d’impression est terminé ou s’il a rencontré un problème. Pour déterminer le statut d’un travail d’impression, utilisez la propriété PrintStatus. Le fragment de code suivant montre comment imprimer le fichier PDF vers un fichier XPS et obtenir le statut de l’impression.
public static void CheckingPrintJobStatus() {
// Créer un objet PdfViewer
PdfViewer viewer = new PdfViewer();
// Ouvrir le fichier PDF d'entrée
viewer.bindPdf(_dataDir + "sample.pdf");
// Définir les attributs pour l'impression
viewer.setAutoResize(true); // Imprimer le fichier avec une taille ajustée
viewer.setAutoRotate(true); // Imprimer le fichier avec une rotation ajustée
viewer.setPrintAsGrayscale(true);
// Créer des objets pour les paramètres de l'imprimante et de la page et PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// Définir l'imprimante Microsoft Soft Printer
printerSettings.setPrinterName("HP Universal Printing PS (v7.0.0)");
// Définir la taille de la page (si nécessaire)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// Définir les marges de la page (si nécessaire)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// Imprimer le document en utilisant les paramètres de l'imprimante et de la page
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// Vérifier le statut de l'impression
if (viewer.getPrintStatus() != null) {
Exception ex = (Exception) viewer.getPrintStatus();
System.out.println(ex.getMessage());
} else {
// Aucune erreur n'a été trouvée. Le travail d'impression s'est terminé avec succès
System.out.println("Tout s'est bien passé !");
}
// Fermer le fichier PDF après l'impression
viewer.close();
}