文档章节

在JSP页面生成PDF文件

文文1
 文文1
发布于 2016/05/20 10:00
字数 691
阅读 165
收藏 0

(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

© 著作权归作者所有

共有 人打赏支持
文文1
粉丝 21
博文 351
码字总数 117672
作品 0
长沙
程序员
和的区别

<%@include%>和jsp:include的区别,发现了一些东西的。 <%@include%>:页面请求之前预编译,所有代码包含进来之后,一起进行处理,把所有代码合在一起,编译成一个servlet jsp:include:所有...

Alex_曰生
2015/04/04
0
0
@include与jsp:include的区别

1.可以使用一个JSP指令或者一个标准行为,在JSP页面中引入其他的页面片段。 2. include指令:在翻译阶段(将JSP页面转换成servlet的阶段),JSP的include指令会读入指定的页面中的内容,并将...

随智阔
2014/03/08
0
0
与区别

我们都知道在jsp中include有两种形式,分别是Include指令:和include动作:。前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的...

陶邦仁
2015/04/08
0
0
(JavaEE-07)JSP.md

JSP JSP全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态Web资源的技术。JSP的编写就像编写HTML一样简单,但是与HTML不同的是,在JSP中,可以编写Java代码...

_-Leon-_
2014/07/04
0
0
JSP转译成Servlet详细过程

很多人都会认为JSP的执行性能会和Servlet相差很多,其实执行性能上的差别只在第一次的执行。因为JSP在执行第一次后,会被编译成Servlet的类文件,即.class,当再重复调用执行时,就直接执行第...

疑似一僧
2013/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cacti监控安装

cacti是用PHP实现的一个软件,它用snmp服务获取数据,然后用rrdtool存储和更新数据,并生成图表展示。比较适合用于交换机、路由器的网络监控,插件众多,可图示化显示网络状况。 cacti官方推...

hiwill
5分钟前
0
0
shell特殊符号、cut、sort、uniq、wc、tee、tr、split命令

10月15日任务 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 cut 命令 cut作用:截取字符串 用法如下:cat /etc/passwd |head -2 |cut -d ...

hhpuppy
34分钟前
1
0
Springboot实现filter拦截token验证和跨域

背景 web验证授权合法的一般分为下面几种 1使用session作为验证合法用户访问的验证方式 使用自己实现的token 使用OCA标准 在使用API接口授权验证时,token是自定义的方式实现起来不需要引入其...

funnymin
今天
3
0
linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部