Avec JasperReports, imprimez directement sur l'imprimante sans sortir le fichier au format PDF, etc. Une note des résultats de l'enquête en raison des exigences inhabituelles susmentionnées dans les affaires. Il y avait un exemple de code sur le net, mais comme la version était ancienne et utilisait une API obsolète, j'ai créé un exemple pour prendre en charge la version 6.8.
En supposant l'estimation fictive suivante
Paramètres | Clé | Exemple de valeur de réglage |
---|---|---|
Adresse du client | CLIENT_ADDRESS | 1-23-45, Ginza, Chuo-ku, Tokyo |
Nom de l'entreprise du client | CLIENT_NAME | Co., Ltd. ○○○○ |
Représentant client | CLIENT_PERSON | ○○ ○○ |
Adresse de la société | CORP_ADDRESS | 1-2-3 Nishi-Shinjuku, Shinjuku-ku, Tokyo |
Nom de la compagnie | CORP_NAME | Co., Ltd. |
Responsable interne | SALES_PERSON | ×× ×× |
Estimation Non. | ESTIMATE_NO | No.20190601 |
Date de création | CREATED_DATE | 2019/06/03 |
date d'expiration | EXPIRATION_DATE | 2019/06/14 |
Date de livraison | DELIVERY_DATE | 2019/06/28 |
Modalités de paiement | PAYMENT_TERMS | Clôture de mois Paiement à la fin du mois suivant |
Remarques | REMARKS | La taxe à la consommation est de 8%Il est calculé par. |
champ | Clé | Exemple de valeur de réglage |
---|---|---|
Nom du produit | item | Produit AAAA |
quantité | quantity | 10 |
Prix unitaire | unit | 200 |
Somme d'argent | price | 2000 |
Main.java
public class DirectPrintSample {
/**Fichier de modèle JasperReport*/
public static final String REPORT_TEMPLATE = "template/quotation.jrxml";
/**Nom de l'imprimante de destination de sortie*/
public static final String PRINTER_NAME = "(Nom de l'imprimante de sortie)";
public static void main(String[] args) {
//Initialiser la définition du formulaire
JasperReport report = null;
try {
report = createReport();
} catch (IOException e) {
e.printStackTrace();
} catch (JRException e) {
e.printStackTrace();
}
//Créer un document (définir les données de sortie dans la définition de formulaire)
JasperPrint print = null;
try {
print = createPrint(report);
} catch (JRException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
//Imprimez directement le formulaire en spécifiant l'imprimante
try {
exportPrint(print, PRINTER_NAME);
} catch (JRException e) {
e.printStackTrace();
}
}
/**
*Initialisez la définition du formulaire.
* @throws IOException
* @throws JRException
*/
public static JasperReport createReport() throws IOException, JRException {
//Compilez la mise en page du formulaire
try (InputStream is = DirectPrintSample.class.getClassLoader().getResourceAsStream(REPORT_TEMPLATE)) {
return JasperCompileManager.compileReport(is);
}
}
/**
*Définissez les données à afficher sous forme de formulaire.
* @param jasperReport
* @throws JRException
* @throws ParseException
*/
public static JasperPrint createPrint(JasperReport jasperReport) throws JRException, ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
//Jeu de paramètres
Map<String, Object> parameters = new HashMap<>();
parameters.put("CLIENT_ADDRESS", "1-23-45, Ginza, Chuo-ku, Tokyo");
parameters.put("CLIENT_NAME", "Co., Ltd. ○○○○");
parameters.put("CLIENT_PERSON", "○○ ○○");
parameters.put("CORP_ADDRESS", "1-2-3 Nishi-Shinjuku, Shinjuku-ku, Tokyo");
parameters.put("CORP_NAME", "Co., Ltd.");
parameters.put("SALES_PERSON", "×× ××");
parameters.put("ESTIMATE_NO", "No.20190001");
parameters.put("CREATED_DATE", sdf.parse("2019/06/03"));
parameters.put("EXPIRATION_DATE", sdf.parse("2019/06/14"));
parameters.put("DELIVERY_DATE", sdf.parse("2019/06/28"));
parameters.put("PAYMENT_TERMS", "Clôture de mois Paiement à la fin du mois suivant");
parameters.put("REMARKS", "La taxe à la consommation est de 8%Il est calculé par.");
//Jeu d'enregistrements
List<Item> list = new ArrayList<>();
list.add(new Item("Produit AAAA", 10, 200, 2000));
list.add(new Item("Produit BBBB", 20, 600, 12000));
list.add(new Item("Produit CCCC", 100, 250, 25000));
JRDataSource dataSource = new JRBeanCollectionDataSource(list);
return JasperFillManager.fillReport(jasperReport, parameters, dataSource);
}
/***
*Imprimez directement le formulaire.
* @param jasperPrint
* @param printerName
* @throws JRException
*/
private static void exportPrint(JasperPrint jasperPrint, String printerName) throws JRException {
//Générer une classe de sortie pour l'imprimante
JRPrintServiceExporter exporter = new JRPrintServiceExporter();
//Définir le document à imprimer
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
//Spécifiez l'imprimante d'impression de destination de sortie
SimplePrintServiceExporterConfiguration conf = new SimplePrintServiceExporterConfiguration();
HashPrintServiceAttributeSet printAttribute = new HashPrintServiceAttributeSet();
printAttribute.add(new PrinterName(PRINTER_NAME, Locale.getDefault()));
conf.setPrintServiceAttributeSet(printAttribute);
exporter.setConfiguration(conf);
//Effectuer la sortie de l'imprimante
exporter.exportReport();
}
}
Item.java
public class Item {
private String item;
private int quantity;
private int unit;
private int price;
Item(String item, int quantity, int unit, int price) {
this.item = item;
this.quantity = quantity;
this.unit = unit;
this.price = price;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public int getUnit() {
return unit;
}
public void setUnit(int unit) {
this.unit = unit;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
Ce qui suit est une sortie PDF avec la destination de sortie définie sur Microsoft Print to PDF.
Recommended Posts