Die Anforderungen sind eine Funktion des Exportierens von PDF. Der Multi-Party-Laufen wurde endlich implementiert. Ich habe viele Umwege gemacht und vermute, dass diese Methode jetzt noch in einer Kurve ist.
Es gibt ein JSPDF -Plugin, das am vorderen Ende direkt PDF erzeugen kann, was sehr einfach ist, aber nicht den IE unterstützt.
Frontend:
Führen Sie zuerst html2canvas.js ein
html2canvas (document.body, {// Screenshot -Objekt // Die detaillierten Parameter können hier konfiguriert werden: Funktion (Canvas) {// Die Rendering Callback Callback Canvas Canvas.id = "mycanvas"; // Die Basis64 -Bilddaten -Daten -Var -Dataurl = canvas.todataRl ('Image/PNG'; Parameter var formdata = new FormData (); Die Übertragungsmethode und die Adresse xhr.send (FormData); erfolgreich exportiert! // Die Bild -URL -Daten mit Base64 in BloBfunction Convertbase64UrltoBLOB (urdata) {// den URL -Header entfernen und in Byte var bytes = Fenster entfernen.atob (urdata.split (') [1]); // Ausnahmen entsorgen und den ASCII -Code mit weniger als 0 auf mehr als 0 var ab = New ArrayBuffer (Bytes.Length) konvertieren; var ia = new Uint8Array (ab); für (var i = 0; i <bytes.length; i ++) {ia [i] = bytes.charCodeat (i); } neuer Blob zurückgeben ([ab], {type: 'image/png'});}Kompatibilität: Firefox 3.5+, Chrome, Opera, IE10+
Nicht unterstützt: Iframe, Browser-Plug-In, Flash
Cross-Domain-Bilder müssen mit dem Cross-Domain-Server-Header kombiniert werden, um Cross-Domain
Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: TRUE
Das SVG -Bild kann nicht direkt unterstützt werden, es gibt ein Patch -Paket, aber ich habe es nicht ausprobiert.
IE9 unterstützt weder das Format "FormData" noch unterstützt es Blob. In diesem Fall wird die von Canvas generierte 64Base -Zeichenfolge entfernt und dann direkt an den Hintergrund übergeben. Nach Eingang des Hintergrunds:
String base64 = img.split (",") [1]; Base64Decoder decodes = new Base64DeCoder (); byte [] imgByte = decode.decodeBuffer (Base64);hinteres Ende:
Importieren Sie das ITEXT JAR -Paket (offizielle Download -Adresse: https://sourceforge.net/projects/itext/)
@RequestMapping ("/exportepdf") public @ResponseBody void exportpdf (multiparthttpServletRequest -Anforderung, httpServletResponse -Antwort) löscht ServleTexception, IOException {resultdata result = neuer resultdata (); // benutzerdefinierte Ergebnis Format String filepath = "c: //exportpdf2.pdf"; String imagePath = "c: //exportimg2.bmp"; Document document = new document (); try {map getMap = request.getFilemap (); MultipartFile mFile = (MultipartFile) getMap.get ("imgdata"); // Data InputStream File = mFile.getInputStream () abrufen; byte [] FileByte = filecopyutils.copyTobytearray (Datei); FileImageOutputStream ImageOutput = new FileImageOutputStream (neue Datei (ImagePath)); // Eingabe Stream ImageOutput.Write (FileByte, 0, FileByte.length) öffnen; // Lokale Bilddatei imageOutput.Close () generieren; Pdfwriter.getInstance (Dokument, neuer FileOutputStream (Filepath)); // itextPDF -Datei // document.setPageSize (pageSize.A2); document.open (); document.add (neuer Absatz ("Just Test ...")); Image Image = Image.getInstance (ImagePath); // itext-pdf-image float higth = image.getheight (); float width = image.getWidth (); int prozent = Getpercent2 (Hieth, Breite); // Skalierung des Bildes, um Bild zu skalieren. Image.ScaleperCent (Prozent+3); document.add (Bild); document.close (); result.setsuSccess (true); operatelogservice.addoperateloginfo (Anfrage, erfolgreich exportiert: exportierte Briefing PDF erfolgreich "); } catch (documentException de) {System.err.println (de.getMessage ()); } catch (Ausnahme e) {e.printstacktrace (); result.setsuSccess (falsch); result.setRormessage (e.tostring ()); try {operatorLogService.addoperateloGerror (Anfrage, "Export fehlgeschlagen: Serverausnahme"); } catch (Ausnahme e1) {e1.printstacktrace (); }} response.getWriter (). print (jsonObject.fromObject (result) .toString ());} private static int getSpercent2 (float h, float w) {int p = 0; float p2 = 0,0f; P2 = 530 / W * 100; p = math.round (p2); return p;}ITEXT ist ein bekanntes Open-Source-Site SourceForge-Projekt, eine Java-Klassenbibliothek, mit der PDF-Dokumente generiert werden.
Schnelle Verarbeitungsgeschwindigkeit und unterstützt viele PDF -Funktionen "Advanced".