在JSP页面生成PDF文件

(1).框架为SSH:

xml配置:(blank.jsp页面是啥都没有,完全一个空白页面)

  <!-- 发文管理详细信息,显示PDF发文 -->
	    <action name="showPdf" method="showPdf" class="standard-fileDataAction">
			<result  name="success" >
			/blank.jsp
			</result>	
		</action>

JAVA后台:

public String showPdf() throws IOException{
		FileData fileData = fileDataService.getById(id);
		byte[] bit = fileData.getData();
		if(bit != null){
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentLength(bit.length);   
			response.setContentType("application/pdf;charset=UTF-8");
			OutputStream test = response.getOutputStream(); 
			DataOutput output = new DataOutputStream(test);    

			for( int i = 0; i < bit.length; i++ ) { 
				output.writeByte(bit[i] ); 
			} 
			test.flush(); 
			test.close(); 
			test=null; 
			response.flushBuffer(); 
		}
		return ActionSupport.SUCCESS;
	}

JSP页面请求:

./iface/showPdf?id="+fileDataObject.getId()

(2)这个测试可行,在网上也搜索了其他的一些用法,不过没有测试过:

把PDF文档通过JSP页面展示给用户。主要使用Object标签来实现的。

<html>
<head>
<title>Insert title here</title>
</head>
<body>
 <%   
   String docPath = request.getParameter("docPath ") == null ? "": request.getParameter("docPath ");  
 %>
    <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000"  
     width="990" height="700" border="0" top="-10" name="pdf">  
          <param name="toolbar" value="false">  
          <param name="_Version" value="65539">  
          <param name="_ExtentX" value="20108">  
          <param name="_ExtentY" value="10866">  
          <param name="_StockProps" value="0">  
          <!-- 下面是指明你的PDF文档所在地,相对于发布web目录 -->  
          <param name="SRC" value="<%=docPath%>">  
   </object>  
  
</body>
</html>

(3)利用java读取某个路径下的pdf文件,并在JSP页面打开:

response.setContentType("application/pdf");

FileInputStream in = new FileInputStream(new File("d:/1.pdf"));
OutputStream out = response.getOutputStream();
byte[] b = new byte[512];

while ((in.read(b)) != -1) {
out.write(b);
}

out.flush();
in.close();
out.close();

 

解释下MYSQL中BLOB类型的字段:用于存储二进制数据(利用inputStream来读取文件实际上也是获取文件的二进制数据,和在数据库中获取blob字段值是一样的)

MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。

MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G

解释下字节流:

字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的lang

转载于:https://my.oschina.net/u/2331760/blog/678343

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值