Os requisitos são uma função da exportação de PDF. A corrida multipartidária foi finalmente implementada. Eu fiz muitos desvios e suspeito que esse método ainda esteja em uma curva agora.
Há um plug -in JSPDF que pode gerar diretamente o PDF no front -end, o que é muito simples, mas não suporta o IE.
front-end:
Primeiro, introduza html2canvas.js
html2Canvas (document.body, {// screenShot objeto // Os parâmetros detalhados podem ser configurados aqui ONRENDERED: function (canvas) {// The Rendering Conclusão de retorno de chamada canvas pnevas.id = "myCanvas"; // Os dados da imagem Base64 são gerados varasurl = canvas. ou sem parâmetros Var FormData = new FormData (); "../bulletin/exportpdf"); if (back.success == true) {alertbox ({content: 'pdf exportado com sucesso!', Lock: true, arrastar: false, ok: true}); }}}}}}); // Converta os dados da URL da imagem com base64 em Blobfunction convertbase64urltoblob (urldata) {// remova o cabeçalho da URL e converta -os em byte var bytes = window.atob (urldata.split (',') [1]); // Defenda a exceção e converta o código ASCII com menos de 0 a maior que 0 var ab = novo ArrayBuffer (bytes.length); var Ia = novo UINT8Array (AB); for (var i = 0; i <bytes.length; i ++) {ia [i] = bytes.charcodeat (i); } Retorne new Blob ([ab], {type: 'Image/png'});}Compatibilidade: Firefox 3.5+, Chrome, Opera, IE10+
Não suportado: iframe, plugin de navegador, flash
As imagens de domínio cruzado precisam ser combinadas com o cabeçalho do servidor de domínio cruzado para permitir solicitações de domínio cruzado
Access-Control-Alow-Origin: * Access-Control-Alow-Credenciais: True
A imagem SVG não pode ser suportada diretamente, há um pacote de patch, mas eu não experimentei.
O IE9 não suporta o formato de dados do FormData, nem suporta o BLOB. Nesse caso, a string 64base gerada pela tela será removida e depois passada para o segundo plano diretamente. Depois que o fundo é recebido:
String base64 = img.split (",") [1]; base64decoder decody = new base64decoder (); byte [] imgbyte = decode.DecodeBuffer (base64);extremidade traseira:
Importar o pacote de jart de iText
@RequestMapping ("/exportpdf") public @ResponseBody Void ExportPDF (PARTETHTTTPSERVETREQUEST Solicitação, HTTPServletResponse resposta) lança servletexception, ioexception {resultData resultado = novo resultadodata (); // formato de resultado personalizado string filepath = "c: //exportpdf2.pdf"; String imagePath = "c: //exportimg2.bmp"; Documento documento = new document (); tente {map getMap = request.getFilemap (); MultipartFile mFile = (MultipartFile) getMap.get ("imgdata"); // obtém dados de entrada de dados file = mfile.getInputStream (); byte [] fileByte = FileCopyUtils.copyTobyteArray (arquivo); FileImageOutputStream ImageOutput = new FileImageOutputStream (novo File (ImagePath)); // Abra o fluxo de entrada Imageoutput.Write (FileByte, 0, FileByte.Length); // Gere o arquivo de imagem local Imageoutput.Close (); Pdfwriter.getInstance (documento, new FileOutputStream (filepath)); // iTextpdf file // document.setPagesize (Pagesize.a2); document.open (); document.add (novo parágrafo ("apenas teste ...")); Imagem imagem = imagem.getInstance (imagepath); // iText-PDF-IMAGE FLOAT HEIGTH = Image.getHeight (); largura de flutuação = imagem.getWidth (); int porcent = getPercent2 (heigth, largura); // dimensionar a imagem para dimensionar a imagem.Setalignment (image.middle); Image.ScalePercent (porcentagem+3); document.add (imagem); document.close (); resultado.SetSuccess (true); operatelogservice.addoperateloginfo (solicitação, "exportado com sucesso: exportado Briefing PDF"); } catch (documentException de) {System.err.println (de.getMessage ()); } catch (Exceção e) {e.printStackTrace (); resultado.SetSuccess (false); resultado.SterrorMessage (e.toString ()); tente {operatorlogservice.addoperatelogerror (solicitação, "Falha na exportação: exceção do servidor"); } catch (Exceção E1) {e1.printStackTrace (); }} Response.getWriter (). print (jsonObject.FromObject (resultado) .toString ());} private static int getPercent2 (float h, float w) {int p = 0; flutuar p2 = 0,0f; P2 = 530 / W * 100; p = Math.Round (P2); retornar p;}O ITEXT é um projeto de fonte de código aberto bem conhecido, uma biblioteca de classes Java usada para gerar documentos em PDF.
Velocidade rápida de processamento e suporta muitos recursos "avançados" em PDF.
No entanto, quando ocorre o erro do iText, você não relatará um erro. Você irá pular sobre ele e olhar para o documento PDF e não conseguir encontrar a causa do erro. É realmente uma frustração.
Por fim, gostaria de agradecer às postagens e postagens relevantes do blog na Internet e na Baidu Search.
O artigo acima salva a página HTML como uma imagem e grava a imagem no PDF para obter a implementação completa (recomendada) é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.