导航:首页 > 文档加密 > 在jsp显示pdf文件

在jsp显示pdf文件

发布时间:2023-02-27 05:08:11

A. jsp页面如何导成pdf格式

先在服务器上生成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();
}

B. 怎么用jsp网页直接打开pdf文件.达到预览的效果,像百度那样的

网上有个开源组件叫flexpaper,使用的flash技术
在网站后台把pdf文档转换成swf,就可以使用flexpaperviewer观看了。

C. 通过jsp页面怎么打开服务器上pdf文件

在不需要使用插件,直接打开通过链接方式打开

<%@pagelanguage="java"import="java.util.*,java.io.*"
pageEncoding="UTF-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"
+request.getServerName()+":"+request.getServerPort()
+path+"/";
%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
</head>
<%
out.clear();
out=pageContext.pushBody();
response.setContentType("application/pdf");

try{
StringstrPdfPath=newString("D://200701010001.PDF");
//判断该路径下的文件是否存在
Filefile=newFile(strPdfPath);
if(file.exists()){
DataOutputStreamtemps=newDataOutputStream(response
.getOutputStream());
DataInputStreamin=newDataInputStream(
newFileInputStream(strPdfPath));

byte[]b=newbyte[2048];
while((in.read(b))!=-1){
temps.write(b);
temps.flush();
}

in.close();
temps.close();
}else{
out.print(strPdfPath+"文件不存在!");
}

}catch(Exceptione){
out.println(e.getMessage());
}
%>
<body>
<br>
</body>
</html>

如果访问者的计算机上没有装acrobat reader,直接用iframe或者直接用链接打开,那就不是打开文档,而是直接下载了,为了防止下载,想象到媒体文件的播放方式,加上一些官方的docs,考虑用用object标签使用pdf插件嵌入ie中

<HTML>
<HEAD>
<METAhttp-equiv="Content-Type"content="text/html;charset=gb2312">
<METAhttp-equiv="Content-Style-Type"content="text/css">
<METAhttp-equiv="Content-Script-Type"content="text/javascript">
<TITLE>(IE4+)...</TITLE>
<SCRIPTfor="window"event="onload"
<!--
document.all[
document.all.PDFNotKnown?"IfNoAcrobat":"IfAcrobat"
].style.display="block";
//--></SCRIPT>
</HEAD>
<BODY>
<NOSCRIPT>
(orthefullAcrobat)
installed<FONTsize="-1">(
turnedoff)</FONT>.
</NOSCRIPT>
<DIVid="IfNoAcrobat"style="display:none">
<ahref="http://get.adobe.com/cn/reader/">你需要先安装AdobeReader才能正常浏览文件,请点击这里下载AdobeReader.</a>

</DIV>
<OBJECTtype="application/pdf"width=0height=0style="display:none">
<DIVid="PDFNotKnown"style="display:none">&nbsp;</DIV>
</OBJECT>
<DIVid=showdiv
style="Z-INDEX:0;LEFT:10px;WIDTH:990px;POSITION:absolute;TOP:-8px;HEIGHT:10px">
<objectclassid="clsid:CA8A9780-280D-11CF-A24D-444553540000"width="990"height="700"border="0"top="-10"name="pdf">
<paramname="toolbar"value="false">
<paramname="_Version"value="65539">

<paramname="_ExtentX"value="20108">

<paramname="_ExtentY"value="10866">

<paramname="_StockProps"value="0">

<paramname="SRC"value="MXL.pdf">
</object>
</DIV>
</BODY>
</HTML>

在网页中直接显示pdf格式的文件方便阅读。但是如果文件较大加载速度会很慢,另外如果客户端没有安装pdf阅读插件的话,也就看不了了,不过还是贴出来了,各取所需吗。(1.pdf要改成自己的pdf文件路径插入到页面文件中)

Html代码
<objectclassid="clsid:CA8A9780-280D-11CF-A24D-444553540000"width="800"height="1050"border="0">
<paramname="_Version"value="65539">
<paramname="_ExtentX"value="20108">
<paramname="_ExtentY"value="10866">
<paramname="_StockProps"value="0">
<paramname="SRC"value="1.pdf">
</object>

<objectclassid="clsid:CA8A9780-280D-11CF-A24D-444553540000"width="800"height="1050"border="0">
<paramname="_Version"value="65539">
<paramname="_ExtentX"value="20108">
<paramname="_ExtentY"value="10866">
<paramname="_StockProps"value="0">
<paramname="SRC"value="1.pdf">
</object>
标准浏览器中:

Java代码
<objectdata="1.pdf"type="application/pdf"width="300"height="200">
alt:<ahref="1.pdf">test.pdf</a>
</object>

<objectdata="1.pdf"type="application/pdf"width="300"height="200">
alt:<ahref="1.pdf">test.pdf</a>
</object>
IE7.0以上版本的浏览器中可用如下方法,低版本的IE会显示两个Object区域

Java代码
<objectclassid="clsid:CA8A9780-280D-11CF-A24D-444553540000"width="800"height="1050"border="0">
<paramname="_Version"value="65539">
<paramname="_ExtentX"value="20108">
<paramname="_ExtentY"value="10866">
<paramname="_StockProps"value="0">
<paramname="SRC"value="1.pdf">
<objectdata="1.pdf"type="application/pdf"width="300"height="200">
alt:<ahref="1.pdf">test.pdf</a>
</object>
</object>

<objectclassid="clsid:CA8A9780-280D-11CF-A24D-444553540000"width="800"height="1050"border="0">
<paramname="_Version"value="65539">
<paramname="_ExtentX"value="20108">
<paramname="_ExtentY"value="10866">
<paramname="_StockProps"value="0">
<paramname="SRC"value="1.pdf">
<objectdata="1.pdf"type="application/pdf"width="300"height="200">
alt:<ahref="1.pdf">test.pdf</a>
</object>
</object>
低版本浏览器中的处理方法1:

Java代码
<!--[ifIE]>
<objectclassid="clsid:CA8A9780-280D-11CF-A24D-444553540000"width="800"height="1050"border="0">
<paramname="_Version"value="65539">
<paramname="_ExtentX"value="20108">
<paramname="_ExtentY"value="10866">
<paramname="_StockProps"value="0">
<paramname="SRC"value="1.pdf">
</object>
<![endif]-->
<!--[if!IE]><!-->
<objectdata="1.pdf"type="application/pdf"width="800"height="1050">
alt:<ahref='http://get.adobe.com/cn/reader'>AdobeReader.pdf</a>
</object>
<!--<![endif]-->

<!--[ifIE]>
<objectclassid="clsid:CA8A9780-280D-11CF-A24D-444553540000"width="800"height="1050"border="0">
<paramname="_Version"value="65539">
<paramname="_ExtentX"value="20108">
<paramname="_ExtentY"value="10866">
<paramname="_StockProps"value="0">
<paramname="SRC"value="1.pdf">
</object>
<![endif]-->
<!--[if!IE]><!-->
<objectdata="1.pdf"type="application/pdf"width="800"height="1050">
alt:<ahref='http://get.adobe.com/cn/reader'>AdobeReader.pdf</a>
</object>
<!--<![endif]-->
低版本浏览器中的处理方法2:通过CSS控制显示隐藏


Html代码
/**/


*htmlobject.hiddenObjectForIE{display:none;}
/**/
/*IEMac/*//*/
*htmlobject.hiddenObjectForIE{display:inline;}
/**/

/**/

*htmlobject.hiddenObjectForIE{display:none;}
/**/
/*IEMac/*//*/
*htmlobject.hiddenObjectForIE{display:inline;}
/**/

Html代码
<objectclassid="clsid:CA8A9780-280D-11CF-A24D-444553540000"width="800"height="1050"border="0">
<paramname="_Version"value="65539">
<paramname="_ExtentX"value="20108">
<paramname="_ExtentY"value="10866">
<paramname="_StockProps"value="0">
<paramname="SRC"value="1.pdf">
<objectdata="1.pdf"type="application/pdf"width="300"height="200"class="hiddenObjectForIE">
alt:<ahref="1.pdf">test.pdf</a>
</object>
</object>

以上文章转自 http://www.cnblogs.com/mengzw/p/4754757.html

D. 如何在jsp中直接打开本地硬盘上的pdf等文件

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 {
}
}

E. 想在jsp上显示pdf,这么做,在线等

需要将pdf转换成flash(swf)格式才可以。网络文库上就是flash。上传时同时传两份,一份原版,一份转换后的flash文件。给我们显示的是flash,下载时下的是原版文件。

F. 在JSP中怎么实现网页直接浏览PDF和WORD文件

pdf 在html5规范中可以直接看(微网站不行,IOS被微信给限制了),word转化成pdf再看。要兼容更低的浏览器。转成图片看。word先转pdf再转图片,操作word是比较麻烦的事。除微软office、openoffice,金山wps我是没找到其他库是否可直接把word转pdf。java的poi应该可以把word转pdf,但是我用的c库,没深入研究。openoffice转化不稳定,别用,找其他库。

G. JSP页面打开PDF文件

有两种方法:
一、直接用链接指向这个文件。
二、用IO把文件读取,再向页面输出。response.setContentType,要设置这个。

阅读全文

与在jsp显示pdf文件相关的资料

热点内容
sybaseisql命令 浏览:181
android权威编程指南pdf 浏览:661
哪些软件属于加密软件 浏览:644
文件夹75丝什么意思 浏览:468
最便宜sop8单片机 浏览:964
图解周易预测学pdf 浏览:418
c盘莫名奇妙多了几个文件夹 浏览:169
贵州花溪门票优惠app哪个好 浏览:801
如何说话不会让人有被命令的感觉 浏览:438
哪里可下载湘工惠app 浏览:263
福特python 浏览:310
pdf转换成word表格 浏览:351
无线远端服务器无响应是什么意思 浏览:670
两位整数倒序输出python 浏览:781
为什么我的世界天空服务器进不去 浏览:262
钉钉直播后的视频如何线上加密 浏览:503
听主的命令 浏览:208
全民上云时代云服务器 浏览:519
iphone不创建id如何下载app 浏览:972
windowsphp扩展安装 浏览:93