数据库表字段存入图像(jpg)的byte,转pdf显示与下载

包:itextpdf

jgp 显示:

  /**
	 * 加载image图片
	 */
	@RequestMapping(value = "showImg", method = RequestMethod.GET)
	public void showImg(HttpServletRequest request, HttpServletResponse response) {
		String imgno = request.getParameter("imgno");
		byte[] bytes = StoreFactory.getImage(new BigDecimal(imgNo));
		if (bytes == null)
			return;
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		try {
			OutputStream stream = response.getOutputStream();
			stream.write(bytes);
			stream.flush();
			stream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

pdf 显示:

	@RequestMapping(value = "showPdf", method = RequestMethod.GET)
		public void showPdf(HttpServletRequest request, HttpServletResponse response) {
			String imgno = request.getParameter("imgno");
			byte[] bytes = StoreFactory.getImage(new BigDecimal(imgno));
			if (bytes == null)
				return;
			 Document document = new Document();
			    try{
			        response.setContentType("application/pdf");  //设置http的content-type为application/pdf。
			        PdfWriter.getInstance(document, response.getOutputStream());//PdfWriter定向到response的输出流上
			        // 设置文档的大小  
			        document.setPageSize(PageSize.A4);  
			        // 打开文档  
			        document.open();  
			        // 写入一段文字  
			     //   document.add(new Paragraph("JUST TEST ..."));  
			        // 读取一个图片  
			        Image image = Image.getInstance(bytes);  
			        float imageHeight=image.getScaledHeight();  
			        float imageWidth=image.getScaledWidth();  
			        int i=0;  
			        while(imageHeight>500||imageWidth>500){  
			        image.scalePercent(100-i);  
			        i++;  
			        imageHeight=image.getScaledHeight();  
			        imageWidth=image.getScaledWidth();  
			        System.out.println("imageHeight->"+imageHeight);  
			        System.out.println("imageWidth->"+imageWidth);  
			        }  
			     
			        image.setAlignment(Image.ALIGN_CENTER);   
//			           //设置图片的绝对位置  
			        // image.setAbsolutePosition(0, 0);  
			        // image.scaleAbsolute(500, 400);  
			        // 插入一个图片  
			        document.add(image);  
			    }catch(Exception e){
			        e.printStackTrace();
			    }
			    document.close();
			
		}

pdf 下载:

@RequestMapping(value = "img2pdfDown", method = RequestMethod.POST)
	public void img2pdfDown(HttpServletRequest request, HttpServletResponse response){
		String imgNos = request.getParameter("imgNos");
		String imanos[] = imgNos.split(",");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		String dateString = sdf.format(new Date());
		String fileName = dateString+".pdf";  
		Document doc = new Document(new Rectangle(800, 800), 0, 0, 0, 0);
		try {  
			OutputStream fos = response.getOutputStream(); 
			response.setHeader("Content-disposition", "attachment;filename=" + fileName); //打开下载框
			response.setContentType("application/x-download");
			PdfWriter.getInstance(doc, fos);  
			doc.open();
            for (String imgno : imanos) {
            	if(StringUtils.isEmpty(imgno)) return;
            	byte[] bytes = StoreFactory.getImage(new BigDecimal(imgno));
            	Image image = Image.getInstance(bytes);
            	image.scaleAbsolute(800, 800);
            	doc.add(image);
			}
            if(doc!=null && doc.isOpen()) doc.close();
        } catch (IOException | DocumentException e) {  
            e.printStackTrace();  
        } 
	}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值