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 Base64 -Bilddaten werden generiert var dataurl = canatvas. Ohne Parameter var formdata = new formdata (); "../bulletin/exportpdf"); if (back.success == true) {alertbox ({Inhalt: 'PDF erfolgreich! }}}}}}}); // 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]); // die Ausnahme verteidigen 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 -Plugin, 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
@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: exportiertes Briefing pdf "); } 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".
Wenn der ITEXT -Fehler jedoch auftritt, melden Sie keinen Fehler. Sie werden darüber springen und auf das PDF -Dokument zurückblicken und die Ursache des Fehlers nicht finden. Es ist wirklich eine Frustration.
Schließlich möchte ich mich bei den entsprechenden Blog -Posts und -Posts im Internet und der Baidu -Suche danken.
Der obige Artikel speichert die HTML -Seite als Bild und schreibt das Bild an PDF, um die vollständige Implementierung (empfohlen) der gesamte Inhalt zu erreichen, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.