
在不需要使用插件,直接打开通过链接方式打开
<%@ page language="java" import="java.util.*,java.io.*"pageEncoding="UTF-8"%>
<%
String path = request.getContextPath()
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<%
out.clear()
out = pageContext.pushBody()
response.setContentType("application/pdf")
try {
String strPdfPath = new String("D://200701010001.PDF")
//判断该路径下的文件是否存在
File file = new File(strPdfPath)
if (file.exists()) {
DataOutputStream temps = new DataOutputStream(response
.getOutputStream())
DataInputStream in = new DataInputStream(
new FileInputStream(strPdfPath))
byte[] b = new byte[2048]
while ((in.read(b)) != -1) {
temps.write(b)
temps.flush()
}
in.close()
temps.close()
} else {
out.print(strPdfPath + " 文件不存在!")
}
} catch (Exception e) {
out.println(e.getMessage())
}
%>
<body>
<br>
</body>
</html>
如果访问者的计算机上没有装acrobat reader,直接用iframe或者直接用链接打开,那就不是打开文档,而是直接下载了,为了防止下载,想像到媒体文件的播放方式,加上一些官方的docs,考虑用用object标签使用pdf插件嵌入ie中
<HTML><HEAD>
<META http-equiv="Content-Type" content="text/html charset=gb2312">
<META http-equiv="Content-Style-Type" content="text/css">
<META http-equiv="Content-Script-Type" content="text/javascript">
<TITLE>Checking if Acrobat Reader installed (IE4+)...</TITLE>
<SCRIPT for="window" event="onload"
<!--
document.all [
document.all.PDFNotKnown ? "IfNoAcrobat" : "IfAcrobat"
] .style.display = "block"
//--></SCRIPT>
</HEAD>
<BODY>
<NOSCRIPT>
Cannot determine if you have Acrobat Reader (or the full Acrobat)
installed <FONT size="-1">(because JavaScript is unavailable or
turned off)</FONT>.
</NOSCRIPT>
<DIV id="IfNoAcrobat" style="display:none">
<a href="http://get.adobe.com/cn/reader/">你需要先安装Adobe Reader才能正常浏览文件,请点击这里下载Adobe Reader.</a>
</DIV>
<OBJECT type="application/pdf" width=0 height=0 style="display:none">
<DIV id="PDFNotKnown" style="display:none">&nbsp</DIV>
</OBJECT>
<DIV id=showdiv
style="Z-INDEX: 0 LEFT:10px WIDTH: 990px POSITION: absolute TOP: -8px HEIGHT: 10px">
<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">
<param name="SRC" value="MXL.pdf">
</object>
</DIV>
</BODY>
</HTML>
在网页中直接显示pdf格式的文件方便阅读。但是如果文件较大加载速度会很慢,另外如果客户端没有安装pdf阅读插件的话,也就看不了了,不过还是贴出来了,各取所需吗。(1.pdf要改成自己的pdf文件路径插入到页面文件中)
Html代码<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">
<param name="_Version" value="65539">
<param name="_ExtentX" value="20108">
<param name="_ExtentY" value="10866">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
</object>
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">
<param name="_Version" value="65539">
<param name="_ExtentX" value="20108">
<param name="_ExtentY" value="10866">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
</object>
标准浏览器中:
Java代码
<object data="1.pdf" type="application/pdf" width="300" height="200">
alt : <a href="1.pdf">test.pdf</a>
</object>
<object data="1.pdf" type="application/pdf" width="300" height="200">
alt : <a href="1.pdf">test.pdf</a>
</object>
IE7.0以上版本的浏览器中可用如下方法,低版本的IE会显示两个Object区域
Java代码
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">
<param name="_Version" value="65539">
<param name="_ExtentX" value="20108">
<param name="_ExtentY" value="10866">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
<object data="1.pdf" type="application/pdf" width="300" height="200">
alt : <a href="1.pdf">test.pdf</a>
</object>
</object>
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">
<param name="_Version" value="65539">
<param name="_ExtentX" value="20108">
<param name="_ExtentY" value="10866">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
<object data="1.pdf" type="application/pdf" width="300" height="200">
alt : <a href="1.pdf">test.pdf</a>
</object>
</object>
低版本浏览器中的处理方法1:
Java代码
<!--[if IE]>
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">
<param name="_Version" value="65539">
<param name="_ExtentX" value="20108">
<param name="_ExtentY" value="10866">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
</object>
<![endif]-->
<!--[if !IE]> <!-->
<object data="1.pdf" type="application/pdf" width="800" height="1050">
alt : <a href='http://get.adobe.com/cn/reader'>Adobe Reader.pdf</a>
</object>
<!--<![endif]-->
<!--[if IE]>
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">
<param name="_Version" value="65539">
<param name="_ExtentX" value="20108">
<param name="_ExtentY" value="10866">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
</object>
<![endif]-->
<!--[if !IE]> <!-->
<object data="1.pdf" type="application/pdf" width="800" height="1050">
alt : <a href='http://get.adobe.com/cn/reader'>Adobe Reader.pdf</a>
</object>
<!--<![endif]-->
低版本浏览器中的处理方法2:通过CSS控制显示隐藏
Html代码
/* hides the second object from all versions of IE */
* html object.hiddenObjectForIE { display: none }
/* display the second object only for IE5 Mac */
/* IE Mac /*//*/
* html object.hiddenObjectForIE { display: inline }
/**/
/* hides the second object from all versions of IE */
* html object.hiddenObjectForIE { display: none }
/* display the second object only for IE5 Mac */
/* IE Mac /*//*/
* html object.hiddenObjectForIE { display: inline }
/**/
Html代码
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">
<param name="_Version" value="65539">
<param name="_ExtentX" value="20108">
<param name="_ExtentY" value="10866">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
<object data="1.pdf" type="application/pdf" width="300" height="200" class="hiddenObjectForIE">
alt : <a href="1.pdf">test.pdf</a>
</object>
</object>
以上文章转自 http://www.cnblogs.com/mengzw/p/4754757.html
jsp中要利用java来实现打开,可以通过浏览器打开:以下程序实现了读取某个路径下的pdf文件,并用浏览器打开:
package test
import java.io.File
import java.io.FileInputStream
import java.io.IOException
import java.io.OutputStream
import javax.servlet.ServletException
import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
public class PDFServlet extends HttpServlet {
private static final long serialVersionUID = -3065671125866266804L
public PDFServlet() {
super()
}
public void destroy() {
super.destroy()
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
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()
}
public void init() throws ServletException {
}
}
先在服务器上生成PDF文件,然后用户通过点击指向PDF文件的超链接选择下载或打开。这是一个思路,或者说是思路之一。本文实现了这个思路,又给出另外一个思路并通过两种途径实现之。1)直接在服务器上生成PDF文件。
<%@ page import ="com.lowagie.text.*
,com.lowagie.text.pdf.*, java.io.*"%>
<%
String filename =
"PDF"+(new Random()).nextInt()+".pdf"
Document document =
new Document(PageSize.A4)
ServletOutputStream out1
= response.getOutputStream()
try{
PdfWriter writer =
PdfWriter.getInstance(document,
new FileOutputStream(filename) )
document.open()
document.add(new Paragraph("Hello World"))
document.close()
}
catch(Exception e){}
%>
上面的程序在服务器上生成了一个静态的PDF文件。显然,每次运行所得的PDF文件的名称应该是独一无二不能有重的。本程序通过随机函数来命名生成的PDF文件。本程序的缺点就是,每次运行都会在服务器上产生一个PDF文件,如果不及时删除,数量会越来越大,这显然是站点维护者所不愿意看到的。
2)将PDF文件通过流的形式输送到客户端的缓存。这样做的好处是不会在服务器上留下任何“遗迹”。
i)直接通过JSP页面生成
<%@
page import="java.io.*,
java.awt.Color,com.lowagie.text.*,
com.lowagie.text.pdf.*"%>
<%
response.setContentType
( "application/pdf" )
Document document = new Document()
ByteArrayOutputStream buffer
= new ByteArrayOutputStream()
PdfWriter writer=
PdfWriter.getInstance( document, buffer )
document.open()
document.add(new Paragraph("Hello World"))
document.close()
DataOutput output =
new DataOutputStream
( response.getOutputStream() )
byte[] bytes = buffer.toByteArray()
response.setContentLength(bytes.length)
for( int i = 0
i <bytes.length
i++ )
{
output.writeByte( bytes[i] )
}
%>
ii)通过Servlet生成
import java.io.*
import javax.servlet.*
import javax.servlet.http.*
import com.lowagie.text.*
import com.lowagie.text.pdf.*
public void doGet
(HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException
{
Document document =
new Document(PageSize.A4, 36,36,36,36)
ByteArrayOutputStream ba
= new ByteArrayOutputStream()
try
{
PdfWriter writer =
PdfWriter.getInstance(document, ba)
document.open()
document.add(new
Paragraph("Hello World"))
}
catch(DocumentException de)
{
de.printStackTrace()
System.err.println
("A Document error:" +de.getMessage())
}
document.close()
response.setContentType
("application/pdf")
response.setContentLength(ba.size())
ServletOutputStream out
= response.getOutputStream()
ba.writeTo(out)
out.flush()
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)