Les exigences sont fonction de l'exportation du PDF. La course multipartite a finalement été mise en œuvre. J'ai pris de nombreux détours, et je soupçonne que cette méthode est encore dans un virage maintenant.
Il existe un plug-in JSPDF qui peut générer directement du PDF à l'avant, ce qui est très simple, mais ne prend pas en charge IE.
l'extrémité avant:
Introduire d'abord html2canvas.js
html2Canvas (document.body, {// Objet de capture d'écran // Les paramètres détaillés peuvent être configurés ici OnSendered: fonction (Canvas) {// Le rendu d'image de rappel Canvas Canvas.id = "MyCanvas"; // L'image de base64 Data est générée par DataUrl = Canvas.Todataurl ('Image / PNG'); Format, ou sans paramètres var formdata = new formData (); "../bulletin/exportpdf"); if (back.success == true) {alertbox ({contenu: 'pdf exporté avec succès!', Lock: true, glisser: false, ok: true}); }}}}}}}); // convertir les données d'URL de l'image avec Base64 en blobfonction convertBase64UrlToBlob (urldata) {// Retirez l'en-tête URL et convertissez-la en octet var bytes = window.atob (urldata.split (',') [1]); // défendez l'exception et convertissez le code ASCII avec moins de 0 à plus de 0 var AB = nouveau ArrayBuffer (Bytes.Length); var ia = new uint8Array (ab); pour (var i = 0; i <bytes.length; i ++) {ia [i] = bytes.Charcodeat (i); } return new blob ([ab], {type: 'image / png'});}Compatibilité: Firefox 3.5+, Chrome, opéra, IE10 +
Non pris en charge: iframe, plugin de navigateur, flash
Les images de domaine transversal doivent être combinées avec l'en-tête du serveur transversal pour permettre les demandes de domaine transversal
Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: True
L'image SVG ne peut pas être directement prise en charge, il y a un package de patch, mais je ne l'ai pas essayé.
IE9 ne prend pas en charge le format de données FormData, et il ne prend pas en charge BLOB. Dans ce cas, la chaîne 64Base générée par Canvas sera supprimée puis transmise directement à l'arrière-plan. Une fois le contexte reçu:
String Base64 = img.split (",") [1]; base64decoder decode = new Base64DecOder (); BYTE [] IMGBYTE = DECODE.DECODEBUFFER (BASE64);extrémité arrière:
Importez le package de pot IText
@RequestMapping ("/ ExportPdf") public @ResponseBody void exportpdf (MultipartHTTTPServLetRequest Request, httpServletResponse réponse) lève Servlexception, ioException {resultData result = new resultData (); // chaîne de format de résultat personnalisé filepath = "c: //exportpdf2.pdf"; String imagePath = "c: //exportimg2.bmp"; Document document = nouveau document (); essayez {map getmap = request.getFileMap (); MultipartFile mFile = (multipartFile) getmap.get ("imgdata"); // Obtenez des données inputStream file = mfile.getInputStream (); Byte [] filebyte = fileCopyUtils.copyToByTearray (fichier); FileImageOutputStream imageOutput = new FileImageOutputStream (nouveau fichier (imagePath)); // Ouvrir une entrée Stream ImageOutput.Write (FileByte, 0, FileByte.Length); // générer un fichier image local imageOutput.close (); Pdfwriter.getInstance (document, nouveau fileoutputStream (filepath)); // itextpdf file // document.setPageSize (pagesize.a2); document.open (); document.add (nouveau paragraphe ("Test Just ...")); Image image = image.getInstance (imagePath); // itext-pdf-image float heigth = image.getheight (); float width = image.getWidth (); int pour cent = getpercent2 (heigth, largeur); // Échelle de l'image pour échelle Image.SetAlignment (image.middle); Image.Scalepercent (pourcentage + 3); document.add (image); document.close (); résultat.setsuccess (true); operatelogService.addoperateLoginfo (demande, "exporté avec succès: briefing exporté PDF avec succès"); } catch (documentException de) {System.err.println (de.getMessage ()); } catch (exception e) {e.printStackTrace (); résultat.setsuccess (false); result.seTerrorMessage (e.toString ()); essayez {operatorLogService.addoperateLoGerror (demande, "Exportation échoué: exception du serveur"); } catch (exception e1) {e1.printStackTrace (); }} réponse.getWriter (). print (jsonObject.FromObject (result) .toString ());} private static int getpercent2 (float h, float w) {int p = 0; float p2 = 0,0f; p2 = 530 / w * 100; p = math.round (p2); retour p;}ITEXT est un projet de site de site open source bien connu, une bibliothèque de classe Java utilisée pour générer des documents PDF.
Vitesse de traitement rapide et prend en charge de nombreuses fonctionnalités PDF "avancées".
Cependant, lorsque l'erreur ITEXT se produit, vous ne signalerez pas d'erreur. Vous sauterez par-dessus et regardez en arrière le document PDF et ne trouverez pas la cause de l'erreur. C'est vraiment une frustration.
Enfin, je tiens à remercier les articles de blog et les articles concernés sur Internet et la recherche Baidu.
L'article ci-dessus enregistre la page HTML en tant qu'image et écrit l'image de PDF pour réaliser l'implémentation complète (recommandée) est le contenu entier que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.