導航:首頁 > 文檔加密 > 在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