Korrekt. Wenn es sich um ein Geschäftsdokument handelt, handelt es sich um einen vorgeschriebenen Stempel. Wenn Sie es zum Spaß verwenden möchten, ist es meiner Meinung nach eine gute Idee, eine Logo-Markierung hinzuzufügen, um es cool zu machen.
Bereiten Sie zunächst die Parameter zum Einfügen des Bildes vor. Dieses Mal lesen wir aus einer statischen Datei, setzen Sie also den Parametertyp auf InputStream. (Beim Lesen des Blob-Typs aus der Datenbank scheint es besser zu sein, den nicht ausgeführten ByteArrayInputStream-Typ zu verwenden.)
Als nächstes setzen Sie Image in das Formular.
Bereiten Sie die zuvor für Expression vorbereiteten Parameter vor. Sie werden gefragt, was mit der Bildquelle geschehen soll. Wählen Sie daher "Später von Java eingeben" (denken Sie daran).
Wenn Sie dies tun können, können Sie es mit einer Vorschau versuchen. Es wird nichts angezeigt ...
Dieses Mal machen wir es in einem Format, das im Browser angezeigt wird, nicht in einem Download-Format. (Mein Geschmack) Die eiserne Regel von MVC. Schreiben Sie einen Controller.
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;
//Holen Sie sich ein Bild
try {
img = new FileInputStream(resource.getResource("picture/aomin.icon.jpg ").getFile());
} catch (IOException e) {
//TODO automatisch generierter Fangblock
e.printStackTrace();
}
//Auf Ansicht setzen
data.put("icon_image", img);
rslt.addObject("jspData", data);
//Gibt eine Ansicht zurück
return rslt;
}
Es sind zwei Elemente erforderlich.
Nur das. Das Kompilieren und Ausgeben des Formulars bleibt der JSP-Seite überlassen.
Schreiben Sie zunächst den folgenden Code in 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();
}
%>
Was hat sich verändert
reportPrint.jsp
<%@ page contentType="application/pdf" %>
Der Ort namens. Stellen Sie hier das PDF-Ausgabeformat ein.
Darüber hinaus ändert sich die grundlegende Methode zur Ausgabe von Formularen weder im Download-Format noch im Anzeigeformat. Bereiten Sie eine Liste von Parametern und Feldern für Daten vor Kompilieren und Ausgabe in den Ausgabestream.
Da diesmal kein Feld vorhanden ist, Ich verwende beim Einbetten von Daten neue JREmptyDataSource ().
Greifen wir auf die vom Controller angegebene Adresse zu.
Sie haben ein Formular mit einem Zeichenlogo gedruckt. Ich denke, es ist eine bessere Wahl, es für Logos und elektronische Briefmarken in Geschäftsräumen zu verwenden.
Lassen Sie uns automatisch Dokumente erstellen.
Recommended Posts