关于根据模板生成pdf文档,差入图片和加密
- import com.alibaba.fastjson.JSONObject;
- import com.aliyun.oss.OSSClient;
- import com.itextpdf.text.pdf.*;
- import com.swetake.util.Qrcode;
- import com.titifootball.common.base.BaseController;
- import com.titifootball.presentation.common.constant.PresentationConstants;
- import com.titifootball.presentation.dao.model.*;
- import com.titifootball.presentation.rpc.api.UresultAttributeService;
- import com.titifootball.presentation.rpc.api.UresultPresentationService;
- import com.titifootball.presentation.rpc.api.UresultTypeService;
- import io.swagger.annotations.ApiOperation;
- import org.apache.batik.transcoder.TranscoderException;
- import org.apache.batik.transcoder.TranscoderInput;
- import org.apache.batik.transcoder.TranscoderOutput;
- import org.apache.batik.transcoder.image.JPEGTranscoder;
- import org.apache.http.HttpEntity;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import javax.imageio.ImageIO;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import java.awt.*;
- import java.awt.image.BufferedImage;
- import java.io.*;
- import java.net.MalformedURLException;
- import java.net.URI;
- import java.net.URL;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.List;
- /**
- * PdfExportController
- * @author jianhun
- * @date 2018/08/29
- */
- @Controller
- @RequestMapping("/manage/pdf/v1")
- public class PlayerReportExportController extends BaseController {
- private final String TEAM_PLAYER_URL="http://localhost:6664/api/v1/upms/team/player/list?teamIds=*";
- private final String PLAYER_URL="http://localhost:6664/api/v1/upms/player/list?playerIds=*";
- private static final Logger LOGGER = LoggerFactory.getLogger(PlayerReportExportController.class);
- @Autowired
- private UresultPresentationService uresultPresentationService;
- @Autowired
- private UresultAttributeService uresultAttributeService;
- @Autowired
- private UresultTypeService uresultTypeService;
- @Autowired
- HttpServletRequest request;
- String SvgPngPath = "";
- String Path = "";
- @RequestMapping(value = "/index", method = RequestMethod.GET)
- public String index() {
- return "/manage/PDF/index.jsp";
- }
- @ApiOperation(value = "Svg转Png")
- @RequestMapping(value = "/svgPng", method = RequestMethod.POST)
- @ResponseBody
- public Map svgPng(@RequestParam(value = "svg") String svg) throws Exception {
- Map resultMap=new HashMap();
- Boolean flag=false;
- String msg="";
- flag=true;
- resultMap.put("flag",flag);
- resultMap.put("message",msg);
- SvgPng(svg);
- return resultMap;
- }
- public void SvgPng(String svg) throws Exception {
- String pathSvg = request.getSession().getServletContext().getRealPath( "/")+"\\pdf\\"+"img\\" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+"Radar"+ ".svg";
- String pathPng = request.getSession().getServletContext().getRealPath( "/")+"\\pdf\\"+"img\\" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+"Radar"+ ".png";
- FileWriter fw = null;
- File f = new File(pathSvg);
- try {
- if (!f.exists()) {
- f.createNewFile();
- }
- fw = new FileWriter(f);
- BufferedWriter out = new BufferedWriter(fw);
- out.write(svg, 0, svg.length());
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- changeSvgToJpg(pathPng, pathSvg);
- }
- private void changeSvgToJpg(String pistrPngFile, String pistrSvgPath) {
- Date date = new Date();
- long timeBegin = date.getTime();
- String strSvgURI;// svg文件路径
- OutputStream ostream = null;
- File fileSvg = null;
- try {
- fileSvg = new File(pistrSvgPath);
- URI uri = fileSvg.toURI();// 构造一个表示此抽象路径名的 file:URI
- URL url = uri.toURL();// 根据此 URI 构造一个 URL
- strSvgURI = url.toString();
- TranscoderInput input = new TranscoderInput(strSvgURI);// 定义一个通用的转码器的输入
- ostream = new FileOutputStream(pistrPngFile);
- TranscoderOutput output = new TranscoderOutput(ostream);// 定义单路输出的转码器
- JPEGTranscoder transcoder = new JPEGTranscoder();// 构造一个新的转码器,产生JPEG图像
- transcoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(0.8));// 设置一个转码过程,JPEGTranscoder.KEY_QUALITY设置输出png的画质精度,0-1之间
- transcoder.transcode(input, output);// 转换svg文件为png
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (TranscoderException e) {
- e.printStackTrace();
- } finally {
- try {
- ostream.flush();
- ostream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- request.getSession().setAttribute("png",pistrPngFile);
- fileSvg.delete();// 删除svg文件
- }
- @RequestMapping(value = "/exportPdf", method = RequestMethod.GET)
- @ResponseBody
- public Map exportPdf(@RequestParam(value = "assessPlayerId") Long assessPlayerId, HttpServletRequest request) throws Exception {
- Map resultMap=new HashMap();
- Boolean flag=false;
- String msg="";
- Map<String, String> reportData = new HashMap<>(16);
- Long teamId=0L;
- Long playerId=0L;
- try {
- HttpGet requestTeamPlayer = new HttpGet(TEAM_PLAYER_URL.replace("*",assessPlayerId.toString()));
- CloseableHttpResponse response = null;
- CloseableHttpClient httpClient = HttpClientBuilder.create().build();
- response = httpClient.execute(requestTeamPlayer);//执行HttpGet请求
- HttpEntity httpEntity = response.getEntity();//获得实体
- if (httpEntity != null) {
- InputStream instreams = httpEntity.getContent();
- JSONObject jsonObject=JSONObject.parseObject(convertStreamToString(instreams));
- if(jsonObject.getInteger("code")==1){
- teamId=jsonObject.getJSONArray("data").getJSONObject(0).getLong("teamId");
- playerId=jsonObject.getJSONArray("data").getJSONObject(0).getLong("playerId");
- }
- }
- String basePath = request.getSession().getServletContext().getRealPath( "/")+"\\pdf\\";
- String basePathImg = request.getSession().getServletContext().getRealPath( "/")+"\\pdf\\"+"img\\" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ ".png";
- HttpSession session= ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession();
- getQrCodeImg("titifootball.com",basePathImg);
- Date date = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd");
- String time = sdf.format(date);
- reportData.put("reportDate",time);
- reportData.put("reportDate1",time);
- reportData.put("reportDate2",time);
- reportData.put("reportDate3",time);
- reportData.put("reportDate4",time);
- reportData.put("reportDate5",time);
- reportData.put("qrcode",basePathImg);
- reportData.put("qrcode2",basePathImg);
- reportData.put("qrcode3",basePathImg);
- reportData.put("qrcode4",basePathImg);
- reportData.put("qrcode5",basePathImg);
- reportData.put("qrcode6",basePathImg);
- reportData.put("PI15","D:\\A.jpeg");
- reportData.put("Radarchart",(String) session.getAttribute("png"));
- System.out.println(reportData);
- List<Long> uresultTypeIdList = new ArrayList<>();
- UresultTypeExample uresultTypeExample = new UresultTypeExample();
- uresultTypeExample.createCriteria()
- .andIsDeletedEqualTo(PresentationConstants.NO);
- uresultTypeExample.setOrderByClause("id desc");
- List<UresultType> uresultTypeList = uresultTypeService.selectByExample(uresultTypeExample);
- if(null != uresultTypeList && uresultTypeList.size() > 0) {
- for(UresultType uresultType : uresultTypeList) {
- uresultTypeIdList.add(uresultType.getId());
- }
- UresultPresentationExample uresultPresentationExample = new UresultPresentationExample();
- uresultPresentationExample.createCriteria()
- .andIsDeletedEqualTo(PresentationConstants.NO)
- .andAssessmentIdEqualTo(1L)
- .andAssessPlayerIdEqualTo(assessPlayerId)
- .andTypeIn(uresultTypeIdList)
- .andStateEqualTo(PresentationConstants.YES);
- uresultPresentationExample.setOrderByClause("id asc");
- List<UresultPresentationDetail> uresultPresentationDetailList =
- uresultPresentationService.selectUresultPresentationDetailByExampleForOffsetPage(
- uresultPresentationExample, 0, 10000);
- for(UresultPresentationDetail uresultPresentationDetail : uresultPresentationDetailList) {
- UresultAttribute uresultAttribute=uresultPresentationDetail.getUresultAttribute();
- if(null!=uresultAttribute){
- String key = uresultPresentationDetail.getUresultAttribute().getCode();
- String value = uresultPresentationDetail.getAttrValue();
- if (null!=value){
- value+=" "+(null!=uresultPresentationDetail.getUresultAttribute().getUnit()?uresultPresentationDetail.getUresultAttribute().getUnit():"");
- }
- reportData.put(key, value);
- }
- }
- }
- String Name = "1";
- String identification = "2";
- for (String key : reportData.keySet()) {
- Path = reportData.get("qrcode");
- SvgPngPath = reportData.get("Radarchart");
- Name = reportData.get("PI06");
- identification = reportData.get("PI12");
- }
- String newPdfName= /*Name+"-"+identification+*/"1.pdf";
- reportData=generalPdf(basePath+"template/pdf-template.pdf",basePath+"data/"+newPdfName,reportData);
- OSSClient client = new OSSClient(com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_ENDPOINT, com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_ACCESSKEYID, com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_ACCESSKEYSECRET);
- String fileUrl="http://"+ com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_BUCKNAME+"."+ com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_ENDPOINT+"/user-report/"+newPdfName;
- client.putObject(com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_BUCKNAME, "user-report/"+newPdfName, new File(basePath+"data/"+newPdfName));
- client.shutdown();
- File pdfFile=new File(basePath+"data/"+newPdfName);
- if (pdfFile.exists()){
- pdfFile.deleteOnExit();
- }
- reportData.put("url",fileUrl);
- DeleteFile(SvgPngPath,Path);
- return reportData;
- }catch (Exception e){
- e.printStackTrace();
- msg=e.getLocalizedMessage();
- }
- resultMap.put("flag",flag);
- resultMap.put("message",msg);
- return resultMap;
- }
- public Map generalPdf(String templatePath,String newPdfPath,Map reportData){
- Map resultMap=new HashMap();
- Boolean flag=false;
- String msg="";
- PdfReader reader;
- FileOutputStream out;
- ByteArrayOutputStream bos;
- PdfStamper stamper;
- PdfImportedPage importedPage;
- try {
- out=new FileOutputStream(newPdfPath);
- reader=new PdfReader(templatePath);
- bos=new ByteArrayOutputStream();
- stamper=new PdfStamper(reader,bos);
- AcroFields form=stamper.getAcroFields();
- Iterator<String> iterator=form.getFields().keySet().iterator();
- while (iterator.hasNext()){
- String name=iterator.next().toString();
- String value=(!reportData.containsKey(name))?"-":reportData.get(name).toString();
- System.out.println(name+"<------->"+value);
- form.setField(name,value);
- if(("PI15".equals(name)) || ("Radarchart".equals(name))||("qrcode".equals(name)) || ("qrcode2".equals(name)) ||("qrcode3".equals(name)) || ("qrcode4".equals(name)) || ("qrcode5".equals(name)) || ("qrcode6".equals(name))){
- String imgpath = reportData.get(name).toString();
- System.out.println(form.getFieldPositions(name));
- int pageNo = form.getFieldPositions(name).get(0).page;
- System.out.println(pageNo);
- com.itextpdf.text.Rectangle Rectangle = form.getFieldPositions(name).get(0).position;
- float x = Rectangle.getLeft();
- float y = Rectangle.getBottom();
- float width = Rectangle.getWidth();
- float height = Rectangle.getHeight();
- // 读图片
- com.itextpdf.text.Image image = com.itextpdf.text.Image.getInstance(imgpath);
- // 获取操作的页面
- PdfContentByte pdfContentByte = stamper.getOverContent(pageNo);
- // 根据域的大小缩放图片
- image.scaleToFit(width, height);
- // 添加图片
- image.setAbsolutePosition(x, y);
- pdfContentByte.addImage(image);
- }
- }
- stamper.setFormFlattening(true);
- stamper.close();
- com.itextpdf.text.Document doc=new com.itextpdf.text.Document();
- PdfWriter pdfWriter = PdfWriter.getInstance(doc,bos);
- // 设置用户密码, 所有者密码,用户权限,所有者权限
- pdfWriter.setEncryption("123456".getBytes(), "123456".getBytes(), PdfWriter.ALLOW_COPY, PdfWriter.ENCRYPTION_AES_128);
- PdfCopy copy=new PdfCopy(doc,out);
- doc.open();
- for (Integer i=1;i<=7;i++){
- importedPage=copy.getImportedPage(new PdfReader(bos.toByteArray()),i);
- copy.addPage(importedPage);
- }
- doc.close();
- flag=true;
- }catch (Exception e){
- e.printStackTrace();
- msg=e.getLocalizedMessage();
- }
- resultMap.put("flag",flag);
- resultMap.put("message",msg);
- return resultMap;
- }
- public static String convertStreamToString(InputStream is){
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
- StringBuilder sb = new StringBuilder();
- String line = null;
- try {
- while ((line = reader.readLine()) != null) {
- sb.append(line + "\n");
- }
- } catch (IOException e) {
- System.out.println("Error=" + e.toString());
- } finally {
- try {
- is.close();
- } catch (IOException e) {
- System.out.println("Error=" + e.toString());
- }
- }
- return sb.toString();
- }
- public static void getQrCodeImg(String content, String imgPath) {
- int width = 80;// 图片宽
- int height =80;// 图片高
- Qrcode qrcode = new Qrcode();// 实例化一个qrcode对象
- qrcode.setQrcodeErrorCorrect('M');// 设置纠错级别(级别有:L(7%) M(15%) Q(25%) H(30%) )
- qrcode.setQrcodeEncodeMode('B');// 设置编码方式
- qrcode.setQrcodeVersion(7);// 设置二维码版本(版本有 1-40个,)
- BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 开始绘制图片start 1.设置图片大小(BufferedImage.TYPE_INT_RGB:利用三原色绘制二维码)
- Graphics2D gs = img.createGraphics();// 获取绘图工具start
- gs.setBackground(Color.WHITE);// 设置背景为白色
- gs.clearRect(0, 0, width, height);// 设置一个矩形(四个参数分别为:开始绘图的x坐标,y坐标,图片宽,图片高)
- gs.setColor(Color.black);// 设置二维码图片的颜色
- byte[] bt = null;
- try {
- bt = content.getBytes("UTF-8");
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- int py = 2;// 偏移量
- boolean[][] code = qrcode.calQrcode(bt);// 开始准备画图
- for (int i = 0; i < code.length; i++) {
- for (int j = 0; j < code.length; j++) {
- if (code[j][i]) {
- gs.fillRect(j * 3 + py, i * 3 + py, 3, 3);// 四个参数(画图的起始x和y位置,每个小模块的宽和高(二维码是有一个一个的小模块构成的));
- }
- }
- }
- try {
- ImageIO.write(img, "png", new File(imgPath));
- } catch (IOException e) {
- // TODO Auto-generated catch block
- System.out.println("二维码异常。。。。。");
- e.printStackTrace();
- }
- }
- public void DeleteFile(String pathPng1,String pathPng2){
- File file1 = new File(pathPng1);
- File file2 = new File(pathPng2);
- if(file1.exists()){
- file1.delete();
- }
- if(file2.exists()){
- file2.delete();
- }
- }
- }
- package com.titifootball.presentation.web.controller;
- import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.OSSClient;
import com.itextpdf.text.pdf.*;
import com.swetake.util.Qrcode;
import com.titifootball.common.base.BaseController;
import com.titifootball.presentation.common.constant.PresentationConstants;
import com.titifootball.presentation.dao.model.*;
import com.titifootball.presentation.rpc.api.UresultAttributeService;
import com.titifootball.presentation.rpc.api.UresultPresentationService;
import com.titifootball.presentation.rpc.api.UresultTypeService;
import io.swagger.annotations.ApiOperation;
import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;- import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;- /**
* PdfExportController
* @author jianhun
* @date 2018/08/29
*/- @Controller
@RequestMapping("/manage/pdf/v1")
public class PlayerReportExportController extends BaseController {
private final String TEAM_PLAYER_URL="http://localhost:6664/api/v1/upms/team/player/list?teamIds=*";
private final String PLAYER_URL="http://localhost:6664/api/v1/upms/player/list?playerIds=*";
private static final Logger LOGGER = LoggerFactory.getLogger(PlayerReportExportController.class);- @Autowired
private UresultPresentationService uresultPresentationService;
@Autowired
private UresultAttributeService uresultAttributeService;- @Autowired
private UresultTypeService uresultTypeService;- @Autowired
HttpServletRequest request;- String SvgPngPath = "";
String Path = "";- @RequestMapping(value = "/index", method = RequestMethod.GET)
public String index() {- return "/manage/PDF/index.jsp";
}
@ApiOperation(value = "Svg转Png")
@RequestMapping(value = "/svgPng", method = RequestMethod.POST)
@ResponseBody
public Map svgPng(@RequestParam(value = "svg") String svg) throws Exception {
Map resultMap=new HashMap();
Boolean flag=false;
String msg="";
flag=true;
resultMap.put("flag",flag);
resultMap.put("message",msg);
SvgPng(svg);
return resultMap;
}- public void SvgPng(String svg) throws Exception {
String pathSvg = request.getSession().getServletContext().getRealPath( "/")+"\\pdf\\"+"img\\" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+"Radar"+ ".svg";
String pathPng = request.getSession().getServletContext().getRealPath( "/")+"\\pdf\\"+"img\\" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+"Radar"+ ".png";
FileWriter fw = null;
File f = new File(pathSvg);
try {
if (!f.exists()) {
f.createNewFile();
}
fw = new FileWriter(f);
BufferedWriter out = new BufferedWriter(fw);
out.write(svg, , svg.length());
out.close();- } catch (IOException e) {
e.printStackTrace();
}
changeSvgToJpg(pathPng, pathSvg);
}
private void changeSvgToJpg(String pistrPngFile, String pistrSvgPath) {
Date date = new Date();
long timeBegin = date.getTime();
String strSvgURI;// svg文件路径
OutputStream ostream = null;
File fileSvg = null;
try {
fileSvg = new File(pistrSvgPath);
URI uri = fileSvg.toURI();// 构造一个表示此抽象路径名的 file:URI
URL url = uri.toURL();// 根据此 URI 构造一个 URL
strSvgURI = url.toString();
TranscoderInput input = new TranscoderInput(strSvgURI);// 定义一个通用的转码器的输入- ostream = new FileOutputStream(pistrPngFile);
TranscoderOutput output = new TranscoderOutput(ostream);// 定义单路输出的转码器
JPEGTranscoder transcoder = new JPEGTranscoder();// 构造一个新的转码器,产生JPEG图像
transcoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(0.8));// 设置一个转码过程,JPEGTranscoder.KEY_QUALITY设置输出png的画质精度,0-1之间
transcoder.transcode(input, output);// 转换svg文件为png
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (TranscoderException e) {
e.printStackTrace();
} finally {
try {
ostream.flush();
ostream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
request.getSession().setAttribute("png",pistrPngFile);- fileSvg.delete();// 删除svg文件
- }
- @RequestMapping(value = "/exportPdf", method = RequestMethod.GET)
@ResponseBody
public Map exportPdf(@RequestParam(value = "assessPlayerId") Long assessPlayerId, HttpServletRequest request) throws Exception {
Map resultMap=new HashMap();
Boolean flag=false;
String msg="";
Map<String, String> reportData = new HashMap<>();
Long teamId=0L;
Long playerId=0L;
try {
HttpGet requestTeamPlayer = new HttpGet(TEAM_PLAYER_URL.replace("*",assessPlayerId.toString()));
CloseableHttpResponse response = null;
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
response = httpClient.execute(requestTeamPlayer);//执行HttpGet请求
HttpEntity httpEntity = response.getEntity();//获得实体
if (httpEntity != null) {
InputStream instreams = httpEntity.getContent();
JSONObject jsonObject=JSONObject.parseObject(convertStreamToString(instreams));
if(jsonObject.getInteger("code")==){
teamId=jsonObject.getJSONArray("data").getJSONObject().getLong("teamId");
playerId=jsonObject.getJSONArray("data").getJSONObject().getLong("playerId");
}
}- String basePath = request.getSession().getServletContext().getRealPath( "/")+"\\pdf\\";
String basePathImg = request.getSession().getServletContext().getRealPath( "/")+"\\pdf\\"+"img\\" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ ".png";
HttpSession session= ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession();
getQrCodeImg("titifootball.com",basePathImg);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd");
String time = sdf.format(date);- reportData.put("reportDate",time);
reportData.put("reportDate1",time);
reportData.put("reportDate2",time);
reportData.put("reportDate3",time);
reportData.put("reportDate4",time);
reportData.put("reportDate5",time);
reportData.put("qrcode",basePathImg);
reportData.put("qrcode2",basePathImg);
reportData.put("qrcode3",basePathImg);
reportData.put("qrcode4",basePathImg);
reportData.put("qrcode5",basePathImg);
reportData.put("qrcode6",basePathImg);
reportData.put("PI15","D:\\A.jpeg");
reportData.put("Radarchart",(String) session.getAttribute("png"));
System.out.println(reportData);
List<Long> uresultTypeIdList = new ArrayList<>();
UresultTypeExample uresultTypeExample = new UresultTypeExample();
uresultTypeExample.createCriteria()
.andIsDeletedEqualTo(PresentationConstants.NO);
uresultTypeExample.setOrderByClause("id desc");
List<UresultType> uresultTypeList = uresultTypeService.selectByExample(uresultTypeExample);
if(null != uresultTypeList && uresultTypeList.size() > ) {
for(UresultType uresultType : uresultTypeList) {
uresultTypeIdList.add(uresultType.getId());
}
UresultPresentationExample uresultPresentationExample = new UresultPresentationExample();
uresultPresentationExample.createCriteria()
.andIsDeletedEqualTo(PresentationConstants.NO)
.andAssessmentIdEqualTo(1L)
.andAssessPlayerIdEqualTo(assessPlayerId)
.andTypeIn(uresultTypeIdList)
.andStateEqualTo(PresentationConstants.YES);
uresultPresentationExample.setOrderByClause("id asc");
List<UresultPresentationDetail> uresultPresentationDetailList =
uresultPresentationService.selectUresultPresentationDetailByExampleForOffsetPage(
uresultPresentationExample, , );
for(UresultPresentationDetail uresultPresentationDetail : uresultPresentationDetailList) {
UresultAttribute uresultAttribute=uresultPresentationDetail.getUresultAttribute();
if(null!=uresultAttribute){
String key = uresultPresentationDetail.getUresultAttribute().getCode();
String value = uresultPresentationDetail.getAttrValue();
if (null!=value){
value+=" "+(null!=uresultPresentationDetail.getUresultAttribute().getUnit()?uresultPresentationDetail.getUresultAttribute().getUnit():"");
}
reportData.put(key, value);
}
}
}
String Name = "1";
String identification = "2";- for (String key : reportData.keySet()) {
Path = reportData.get("qrcode");
SvgPngPath = reportData.get("Radarchart");
Name = reportData.get("PI06");
identification = reportData.get("PI12");
}
String newPdfName= /*Name+"-"+identification+*/"1.pdf";
reportData=generalPdf(basePath+"template/pdf-template.pdf",basePath+"data/"+newPdfName,reportData);- OSSClient client = new OSSClient(com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_ENDPOINT, com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_ACCESSKEYID, com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_ACCESSKEYSECRET);
String fileUrl="http://"+ com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_BUCKNAME+"."+ com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_ENDPOINT+"/user-report/"+newPdfName;
client.putObject(com.titifootball.presentation.web.PresentationConstants.ALIYUN_OSS_BUCKNAME, "user-report/"+newPdfName, new File(basePath+"data/"+newPdfName));
client.shutdown();
File pdfFile=new File(basePath+"data/"+newPdfName);
if (pdfFile.exists()){
pdfFile.deleteOnExit();
}
reportData.put("url",fileUrl);
DeleteFile(SvgPngPath,Path);
return reportData;
}catch (Exception e){
e.printStackTrace();
msg=e.getLocalizedMessage();
}
resultMap.put("flag",flag);
resultMap.put("message",msg);
return resultMap;
}
public Map generalPdf(String templatePath,String newPdfPath,Map reportData){
Map resultMap=new HashMap();
Boolean flag=false;
String msg="";
PdfReader reader;
FileOutputStream out;
ByteArrayOutputStream bos;
PdfStamper stamper;
PdfImportedPage importedPage;
try {
out=new FileOutputStream(newPdfPath);
reader=new PdfReader(templatePath);
bos=new ByteArrayOutputStream();
stamper=new PdfStamper(reader,bos);
AcroFields form=stamper.getAcroFields();
Iterator<String> iterator=form.getFields().keySet().iterator();- while (iterator.hasNext()){
String name=iterator.next().toString();
String value=(!reportData.containsKey(name))?"-":reportData.get(name).toString();
System.out.println(name+"<------->"+value);
form.setField(name,value);
if(("PI15".equals(name)) || ("Radarchart".equals(name))||("qrcode".equals(name)) || ("qrcode2".equals(name)) ||("qrcode3".equals(name)) || ("qrcode4".equals(name)) || ("qrcode5".equals(name)) || ("qrcode6".equals(name))){
String imgpath = reportData.get(name).toString();
System.out.println(form.getFieldPositions(name));
int pageNo = form.getFieldPositions(name).get().page;
System.out.println(pageNo);
com.itextpdf.text.Rectangle Rectangle = form.getFieldPositions(name).get().position;
float x = Rectangle.getLeft();
float y = Rectangle.getBottom();
float width = Rectangle.getWidth();
float height = Rectangle.getHeight();
// 读图片
com.itextpdf.text.Image image = com.itextpdf.text.Image.getInstance(imgpath);
// 获取操作的页面
PdfContentByte pdfContentByte = stamper.getOverContent(pageNo);
// 根据域的大小缩放图片
image.scaleToFit(width, height);
// 添加图片
image.setAbsolutePosition(x, y);
pdfContentByte.addImage(image);
}
}
stamper.setFormFlattening(true);
stamper.close();
com.itextpdf.text.Document doc=new com.itextpdf.text.Document();
/* PdfWriter pdfWriter = PdfWriter.getInstance(doc,bos);
// 设置用户密码, 所有者密码,用户权限,所有者权限
pdfWriter.setEncryption("123456".getBytes(), "123456".getBytes(), PdfWriter.ALLOW_COPY, PdfWriter.ENCRYPTION_AES_128);*/- PdfCopy copy=new PdfCopy(doc,out);
doc.open();
for (Integer i=;i<=;i++){
importedPage=copy.getImportedPage(new PdfReader(bos.toByteArray()),i);
copy.addPage(importedPage);
}
doc.close();
flag=true;
}catch (Exception e){
e.printStackTrace();
msg=e.getLocalizedMessage();
}
resultMap.put("flag",flag);
resultMap.put("message",msg);
return resultMap;
}
public static String convertStreamToString(InputStream is){
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
System.out.println("Error=" + e.toString());
} finally {
try {
is.close();
} catch (IOException e) {
System.out.println("Error=" + e.toString());
}
}
return sb.toString();
}- public static void getQrCodeImg(String content, String imgPath) {
int width = ;// 图片宽
int height =;// 图片高
Qrcode qrcode = new Qrcode();// 实例化一个qrcode对象
qrcode.setQrcodeErrorCorrect('M');// 设置纠错级别(级别有:L(7%) M(15%) Q(25%) H(30%) )
qrcode.setQrcodeEncodeMode('B');// 设置编码方式
qrcode.setQrcodeVersion();// 设置二维码版本(版本有 1-40个,)
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 开始绘制图片start 1.设置图片大小(BufferedImage.TYPE_INT_RGB:利用三原色绘制二维码)
Graphics2D gs = img.createGraphics();// 获取绘图工具start
gs.setBackground(Color.WHITE);// 设置背景为白色
gs.clearRect(, , width, height);// 设置一个矩形(四个参数分别为:开始绘图的x坐标,y坐标,图片宽,图片高)
gs.setColor(Color.black);// 设置二维码图片的颜色
byte[] bt = null;
try {
bt = content.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
int py = ;// 偏移量
boolean[][] code = qrcode.calQrcode(bt);// 开始准备画图
for (int i = ; i < code.length; i++) {
for (int j = ; j < code.length; j++) {
if (code[j][i]) {
gs.fillRect(j * 3 + py, i * 3 + py, , );// 四个参数(画图的起始x和y位置,每个小模块的宽和高(二维码是有一个一个的小模块构成的));
}
}
}
try {
ImageIO.write(img, "png", new File(imgPath));
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("二维码异常。。。。。");
e.printStackTrace();
}
}- public void DeleteFile(String pathPng1,String pathPng2){
File file1 = new File(pathPng1);
File file2 = new File(pathPng2);
if(file1.exists()){
file1.delete();
}
if(file2.exists()){
file2.delete();
}
}
}
关于根据模板生成pdf文档,差入图片和加密的更多相关文章
- JAVA使用itext根据模板生成PDF文档
1.制作PDF模板 网址打开:https://www.pdfescape.com/open/ 我们这里先在线上把基础的内容用word文档做好,然后转成PDF模板,直接上传到网站上,这样方便点 假设我们 ...
- Spring Boot集成JasperReports生成PDF文档
由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲染生成PDF文档.本人文采欠缺,写作能力 ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- 手把手教你使用 Java 在线生成 pdf 文档
一.介绍 在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票.订单的库存打印单.各种电子签署合同等等,以方便用户查 ...
- Aspose.Words操作word生成PDF文档
Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...
- 如何从Windows Phone 生成PDF文档
我需要从我的Windows Phone应用程序生成PDF. 遗憾的是没有标准的免费的PDF生成库在Windows Phone上运行. 我不得不自己生成PDF,通过直接写入到文件格式. 这竟然是真的很容 ...
- 使用PHP生成PDF文档
原文:使用PHP生成PDF文档 实际工作中,我们要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天我给大家来介绍一款优秀的PDF库,它就是TCPDF,TCPDF是一个用于快 ...
- DocFX生成PDF文档
使用DocFX生成PDF文档,将在线文档转换为PDF离线文档. 关于DocFX的简单介绍使用DocFX生成文档 使用docfx 命令 1.下载 https://github.com/dotnet/do ...
- qt 利用 HTML 生成PDF文档,不能显示jpg图片
利用 QPrinter 和html 生成 pdf文档 其中用html语句有显示图片的语句 但只能显示png格式的图片,不能显示jpg格式图片. 经过排查:语法,文件路径等都正确,最终在stack ov ...
随机推荐
- find、which、whereis、locate和type之间的区别
1.find find是最常用和最强大的查找命令.它能做到实时查找,精确查找,但速度慢. find的使用格式如下: #find [指定目录] [指定条件] [指定动作] 指定目录:是指所要搜索的目录和 ...
- matplotlib绘图基本用法-转自(http://blog.csdn.net/mao19931004/article/details/51915016)
本文转载自http://blog.csdn.net/mao19931004/article/details/51915016 <!DOCTYPE html PUBLIC "-//W3C ...
- 解决IIS配置问题
解决网站运行一段时间会变慢的问题 http://blog.csdn.net/rryqsh/article/details/8156558 1. IIS 7 应用程序池自动回收关闭的解决方案 如果你正在 ...
- Windows下javac不可用,java -version可以
https://blog.csdn.net/kobedir/article/details/79709287
- tesseract的编译安装
需要安装: <span style="font-family:'Microsoft YaHei';font-size:14px;">apt-get install au ...
- .NET Core 跨平台发布Linux和OSX
跨平台发布 简单新建一个项目. mkdir dotnethello cd dotnethello dotnet new dotnet new之后 修改project.json 如下: { " ...
- redis 开机启动
使用chkconfig开机启动redis. 把redis初始脚本拷贝到/etc/init.d/下面. #cd /usr/local/redis/redis-2.6.16/utils # cp redi ...
- Selenium+TestNG+Maven(2)
转载自http://www.cnblogs.com/hustar0102/p/5885115.html selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于W ...
- spring mvc 参数绑定
基础类型 原始类型:id必须要传,否则报错. @RequestMapping("/test") @ResponseBody public ResponseData test(int ...
- Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on project
在maven项目中 启动了2个tomcat,只能启动一个.