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, {// screenshot objek // parameter terperinci dapat dikonfigurasi di sini onrendered: function (canvas) {// rendering callback canvas canvas.id = "mycanvas"; // data gambar base64 dihasilkan var dataurl = canvas.odat. Tanpa parameter var formdata = formdata baru (); "/bulletin/Exportpdf "); // Konfigurasikan metode transmisi dan alamat xhr.send (formdata); if (back.success == true) {alertbox ({content: 'PDF berhasil diekspor!', 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]); // Pertahankan pengecualian dan 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, plugin 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
@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, "diekspor dengan sukses: pengarahan yang diekspor pdf"); } 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.
Namun, ketika kesalahan ITEXT terjadi, Anda tidak akan melaporkan kesalahan. Anda akan melompati dan melihat kembali dokumen PDF dan tidak dapat menemukan penyebab kesalahan. Ini benar -benar frustrasi.
Akhirnya, saya ingin mengucapkan terima kasih kepada posting dan posting blog yang relevan di internet dan pencarian Baidu.
Artikel di atas menyimpan halaman HTML sebagai gambar dan menulis gambar ke PDF untuk mencapai implementasi lengkap (disarankan) adalah seluruh konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.