C'est vrai. S'il s'agit d'un document commercial, ce sera un cachet prescrit. Si vous voulez l'utiliser pour le plaisir, je pense que c'est une bonne idée d'ajouter une marque de logo pour le rendre cool.
Tout d'abord, préparez les paramètres pour insérer l'image. Cette fois, nous allons lire à partir d'un fichier statique, alors définissez le type de paramètre sur InputStream. (Lors de la lecture du type Blob à partir de la base de données, il semble préférable d'utiliser le type ByteArrayInputStream, non exécuté)
Ensuite, définissez Image dans le formulaire.
Préparez les paramètres préparés précédemment pour Expression. On vous demandera quoi faire avec la source de l'image, alors sélectionnez "Entrer depuis Java plus tard" (rappelez-vous)
Si vous pouvez le faire, vous pouvez l'essayer avec un aperçu. Rien ne s'affiche ...
Cette fois, faisons-le dans un format qui sera affiché sur le navigateur, pas dans un format de téléchargement. (Mon gout) La règle de fer de MVC. Écrivez un contrôleur.
PainterPrintController.java
@Controller
public class PainterPrintController {
@Autowired
ResourceLoader resource;
@RequestMapping(value = "/paint", method = RequestMethod.GET)
public ModelAndView paintPrint() {
ModelAndView rslt = new ModelAndView("reportPrint");
HashMap<String, Object> data = new HashMap<String, Object>();
InputStream img =null;
//Obtenir une image
try {
img = new FileInputStream(resource.getResource("picture/aomin.icon.jpg ").getFile());
} catch (IOException e) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
}
//Définir pour afficher
data.put("icon_image", img);
rslt.addObject("jspData", data);
//Renvoie une vue
return rslt;
}
Deux éléments sont nécessaires.
Seulement ça. Le processus de compilation et de sortie du formulaire est laissé au côté JSP.
Tout d'abord, écrivez le code suivant dans Jsp.
reportPrint.jsp
<%@ page contentType="application/pdf" %>
<%@ page trimDirectiveWhitespaces="true" %>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="net.sf.jasperreports.engine.data.*" %>
<%@ page import="java.io.*" %>
<%@ page import="org.springframework.core.io.*" %>
<%@ page import="org.springframework.beans.factory.annotation.*" %>
<%@ page import="java.util.*" %>
<%
try{
//GetData And jrxml
HashMap<String, Object> param = (HashMap<String, Object>)request.getAttribute("jspData");
String jrxmlFile = session.getServletContext().getRealPath("/report/paint_print.jrxml");
InputStream input = new FileInputStream(jrxmlFile);
//compile krxml
JasperReport jasperReport = JasperCompileManager.compileReport(input);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, new JREmptyDataSource());
JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
//print pdf on page
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (Exception e){
e.printStackTrace();
}
%>
Qu'est ce qui a changé
reportPrint.jsp
<%@ page contentType="application/pdf" %>
L'endroit appelé. Ici, définissez le format de sortie PDF.
En outre, la méthode de base de sortie des formulaires ne change pas quel que soit le format de téléchargement ou le format d'affichage. Préparer une liste de paramètres et de champs pour les données Compilez et Sortie vers le flux de sortie.
Puisqu'il n'y a pas de champ cette fois, J'utilise le nouveau JREmptyDataSource () lors de l'incorporation de données.
Accédons à l'adresse spécifiée par le contrôleur.
Vous avez imprimé un formulaire avec un logo de caractère. Je pense que c'est un meilleur choix de l'utiliser pour les logos et les tampons électroniques dans les lieux d'affaires.
Créons automatiquement des documents.
Recommended Posts