Persyaratan adalah fungsi mengekspor PDF. Berlari multi-partai akhirnya telah diimplementasikan. Saya telah mengambil banyak jalan memutar, dan saya menduga bahwa metode ini masih dalam tikungan sekarang.
Ada plugin JSPDF yang dapat secara langsung menghasilkan PDF di ujung depan, yang sangat sederhana, tetapi tidak mendukung IE.
Ujung Depan:
Pertama kali memperkenalkan html2canvas.js
html2canvas (document.body, {// objek screenshot // parameter terperinci dapat dikonfigurasi di sini onrendered: function (canvas) {// rendering callback canvas canvas.id = "mycanvas"; // pangkalan base64 data data var dataurl = canvas.todataureuraureur Parameter var formdata = Formdata baru (); Metode dan alamat transmisi xhr.send (formdata); diekspor dengan sukses! ', Lock: true, drag: false, ok: true}); // Konversi data URL gambar dengan base64 menjadi blobfunction convertBase64UrltoBlob (urldata) {// Hapus header URL dan konversinya menjadi byte var bytes = window.atob (urldata.split (',') [1]); // Buang pengecualian, konversi kode ASCII dengan kurang dari 0 menjadi lebih besar dari 0 var ab = arraybuffer baru (bytes.length); var ia = uint8Array baru (AB); untuk (var i = 0; i <bytes.length; i ++) {ia [i] = bytes.charcodeat (i); } return new blob ([ab], {type: 'image/png'});}Kompatibilitas: Firefox 3.5+, Chrome, Opera, IE10+
Tidak didukung: iframe, plug-in browser, flash
Gambar lintas domain perlu dikombinasikan dengan header server lintas domain untuk memungkinkan permintaan lintas domain
Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: True
Gambar SVG tidak dapat didukung secara langsung, ada paket tambalan, tetapi saya belum mencobanya.
IE9 tidak mendukung format data FormData, juga tidak mendukung Blob. Dalam hal ini, string 64Base yang dihasilkan oleh kanvas akan dihapus dan kemudian diteruskan ke latar belakang secara langsung. Setelah latar belakang diterima:
String base64 = img.split (",") [1]; base64decoder decode = base64decoder () baru; byte [] imgbyte = decode.decodeBuffer (base64);Ujung Belakang:
Impor Paket JAR ITEXT (Alamat Unduh Resmi: https://sourceforge.net/projects/itext/)
@RequestMapping ("/ExportPdf") public @ResponseBody void ExportPDF (MultiparthttpServletRequest, HTTPServletResponse Response) Melempar ServletException, ioException {hasil Hasil = Hasil baruData (); // format hasil kustom string filepath = "c: //exportpdf2.pdf"; String imagePath = "c: //exportImg2.bmp"; Dokumen dokumen = dokumen baru (); coba {peta getMap = request.getFileMap (); Multipartfile mfile = (multipartfile) getMap.get ("imgdata"); // Dapatkan file inputStream data = mfile.getInputStream (); byte [] fileByte = filecopyutils.copytobytearray (file); FileImageOutputStream ImageOutput = baru fileImageOutputStream (File baru (imagePath)); // Buka aliran input ImageOutput.write (FileByte, 0, FileByte.length); // Hasilkan file gambar lokal ImageOutput.close (); Pdfwriter.getInstance (dokumen, fileOutputStream baru (filepath)); // itextpdf file // document.setPagesize (pagesize.a2); document.open (); document.add (paragraf baru ("Tes saja ...")); Gambar gambar = image.getInstance (imagePath); // itext-pdf-image float heigth = image.getHeight (); float width = image.getWidth (); int persen = getPercent2 (heigth, lebar); // menskalakan gambar ke skala gambar.setAlignment (image.middle); Image.Scalepercent (Persen+3); document.add (gambar); document.close (); result.setsuccess (true); operatelogservice.addoperateloginfo (permintaan, "berhasil diekspor: pengarahan yang diekspor PDF berhasil"); } catch (DocumentException de) {System.err.println (de.getMessage ()); } catch (Exception e) {E.PrintStackTrace (); result.setsuccess (false); result.seterrormessage (e.tostring ()); coba {operatorLogService.addoperatelogerror (permintaan, "Ekspor Gagal: Pengecualian Server"); } catch (Exception e1) {e1.printstacktrace (); }} response.getWriter (). print (jsonobject.fromObject (hasil) .toString ());} private static int getPercent2 (float h, float w) {int p = 0; float p2 = 0,0f; P2 = 530 / W * 100; p = math.round (p2); mengembalikan p;}ITEXT adalah proyek Source ForgeForge yang terkenal, perpustakaan kelas Java yang digunakan untuk menghasilkan dokumen PDF.
Kecepatan pemrosesan cepat dan mendukung banyak fitur "canggih" PDF.