要件は、PDFのエクスポートの関数です。マルチパーティランニングが最終的に実装されました。私は多くの迂回をしましたが、この方法は今でも曲がっていると思います。
フロントエンドでPDFを直接生成できるJSPDFプラグインがありますが、これは非常にシンプルですが、IEをサポートしていません。
フロントエンド:
最初にhtml2canvas.jsを紹介します
html2canvas(docuct.body、{// screenshot object //詳細パラメーターをここで構成できます:function(canvas){//レンダリング完了コールバックcanvas canvas.id.id = "mycanvas";パラメーターvar formdata(); "../bulletin/exportpdf"); = true){alertbox(content: 'pdf exported fored'、lock:true、drag:fals:true}); {content: 'pdfエクスポート! }}}); // base64を使用して画像URLデータをblobfunction convertbase644urltoblob(urldata){// urlヘッダーを削除し、var bytes = window.atob(urldata.split( '、')[1])に変換します。 //例外を防御し、0未満から0未満のASCIIコードを変換しますvar ab = new arraybuffer(bytes.length); var ia = new uint8array(ab); for(var i = 0; i <bytes.length; i ++){ia [i] = bytes.charcodeat(i); } new Blobを返します([ab]、{type: 'image/png'});}互換性:Firefox 3.5+、Chrome、Opera、IE10+
サポートされていません:iframe、ブラウザプラグイン、フラッシュ
クロスドメインの写真をクロスドメインサーバーヘッダーと組み合わせて、クロスドメインリクエストを許可する必要があります
Access-Control-Allow-Origin: * Access-Control-Allow-Credentials:true
SVGイメージは直接サポートすることはできません。パッチパッケージはありますが、試したことはありません。
IE9はFormDataデータ形式をサポートしておらず、BLOBもサポートしていません。この場合、キャンバスによって生成された64ベース文字列が削除され、その後、背景に直接渡されます。背景を受け取った後:
string base64 = img.split( "、")[1]; base64Decoder decode = new Base64Decoder(); byte [] imgbyte = decode.decodebuffer(base64);
後部:
ITEXT JARパッケージをインポートします
@RequestMapping( "/exportpdf")public @responsebody void exportpdf(multiparthttpservletrequest request、httpservletResponse応答)servletexception、ioexception {resultdata result = new resultData(); //カスタム結果形式文字列filepath = "c://exportpdf2.pdf";文字列ImagePath = "C://EXPORTIMG2.BMP"; document document = new Document(); try {map getMap = request.getFileMap(); multipartfile mfile =(multipartfile)getmap.get( "imgdata"); // data inputstream file = mfile.getInputStream(); byte [] filebyte = filecopyutils.copytobytearray(file); fileimageOutputStream ImageOutput = new FileImageOutputStream(new File(ImagePath)); //入力ストリームImageOutput.write(filebyte、0、filebyte.length); //ローカル画像ファイルImageOutput.close(); pdfwriter.getInstance(document、new fileoutputStream(filepath)); // itextpdf file // document.setPagesize(pagesize.a2); document.open(); document.add(new Paragraph( "Just Test ...")); Image image = image.getInstance(ImagePath); // itext-pdf-image float heigth = image.getheigh(); float width = image.getWidth(); intパーセント= getpercent2(heigth、width); //画像をスケーリングして画像をスケーリングします。 image.scalepercent(パーセント+3); document.add(画像); document.close(); result.setsuccess(true); OperateLogService.Addoperateloginfo(リクエスト、「エクスポートに成功した:エクスポートブリーフィングPDF」); } catch(documentexception de){system.err.println(de.getMessage()); } catch(Exception e){e.printstacktrace(); result.setsuccess(false); result.setErrormessage(e.tostring()); try {OperatorLogService.Addoperatelogerror(request、 "Export Failed:Server Exception"); } catch(例外E1){e1.printstacktrace(); }} response.getWriter()。print(jsonobject.fromobject(result).toString());} private static int getPercent2(float h、float w){int p = 0;フロートP2 = 0.0F; p2 = 530 / w * 100; P = Math.Round(P2); p;}を返しますITEXTは、PDFドキュメントの生成に使用されるJavaクラスライブラリである、有名なオープンソースサイトSourceForgeプロジェクトです。
高速処理速度と多くのPDF「高度な」機能をサポートします。
ただし、iTextエラーが発生した場合、エラーは報告されません。それを飛び越えて、PDFドキュメントを振り返り、エラーの原因を見つけることができません。それは本当に欲求不満です。
最後に、インターネットとBaidu検索での関連するブログの投稿と投稿に感謝します。
上記の記事では、HTMLページを写真として保存し、写真をPDFに書き込み、完全な実装(推奨)を実現します(推奨)。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。