❶ jsp打開pdf
在jsp中打開pdf的實現原理是在頁面上輸出adobe reader對象。
<OBJECT type="application/pdf" width=0 height=0 style="display:none">
<DIV id="PDFNotKnown" style="display:none"> </DIV>
</OBJECT>
如果沒有安裝就要提示:
<DIV id="IfNoAcrobat" style="display:none">
你需要先安裝Adobe Reader才能正常瀏覽文件,請點擊<a href=http://get.adobe.com/cn/reader/download/?installer=Reader_11.0_Chinese_Simplified_for_Windowstarget="_blank">這里</a>下載Adobe Reader.
</DIV>
❷ wkhtmltopdf 把jsp轉換成pdf輸出為什麼是空的
因為jsp不是一個靜態的網頁文件,jsp本質是servlet,所以轉成pdf的時候有可能會有問題;
如果您要列印該網頁,可以直接右鍵保存到本地就行了。
❸ 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();
}
❹ javascript 列印網頁成pdf文件
通過javascript實現PDF自動列印(2009-05-08 15:06:05)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string pdffile = createpdf(false);
iframe1.Attributes.Add("src", pdffile);
}
}
private string createpdf(bool print)
{
try
{
string filename = "Chap0106.pdf";
iTextSharp.text.Document doc = new iTextSharp.text.Document();
PdfWriter writer = iTextSharp.text.pdf.PdfWriter.getInstance(doc, new FileStream(Server.MapPath(filename), FileMode.OpenOrCreate));
doc.Open();
doc.Add(new Paragraph(6, "abcd"));
writer.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);
if (print)
{
PdfAction.javaScript("myOnMessage();", writer);
writer.addJavaScript("this.print(true);function myOnMessage(aMessage) {app.alert('Test',2);} var msgHandlerObject = new Object();doc.onWillPrint = myOnMessage;this.hostContainer.messageHandler = msgHandlerObject;");
}
doc.Close();
return filename;
}
catch
{
return "";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string pdffile = createpdf(true);
iframe1.Attributes.Add("src", pdffile);
}
如題:
<body>
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" name="PDF1" width="760" height="633" border="0">
<param name="SRC" value="01.pdf"/>
</object>
<script language="JavaScript" type="text/javascript">
PDF1.SetShowToolbar(false);
</script>
</body>
在 pdf 文件里加上這樣的屬性就可以了
如何也通過類似「PDF1.SetShowToolbar(false); 」控制實現禁止對pdf內容的復制、以及列印!!!謝謝
javascript實現PDF自動列印
網頁顯示pdf文件,禁止保存和列印
1. 用網頁打開 PDF文件。
2. 只可以瀏覽但是不許列印保存。
結果參照頂樓在jsf里實現如下代碼:
//Get response
FacesContext faces = javax.faces.context.FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse();
//打開源pdf文件
PdfReader reader = new PdfReader("./HelloWorld.pdf");
Document document = new Document(reader.getPageSizeWithRotation(1));
int n = reader.getNumberOfPages();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//將原pdf文件中的內容放入位元組流baos中
PdfCopy = new PdfCopy(document, baos);
//隱藏工具欄並給pdf加密
.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);
.setEncryption(false, null, "pdf", PdfWriter.AllowAssembly);
//往pdf中寫入內容
document.open();
for(int i = 1; i <= n; i++) {
PdfImportedPage page = .getImportedPage(reader, i);
.addPage(page);
}
document.close();
//設置響應類型並將pdf流寫入響應
response.setContentType("application/pdf");
response.setContentLength(baos.size());
response.setHeader("Expires", "0");
response.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
ServletOutputStream out = response.getOutputStream();
//將位元組流baos中的內容寫入響應流
baos.writeTo(out);
out.flush();
faces.responseComplete();
復制代碼
以上代碼的缺點:
1:加密只能實現列印和修改加密。
2:雖然隱藏了工具欄,但是可以通過快捷鍵F8來將工具欄顯示出來
3:IE菜單欄中自帶的保存功能也能將此pdf保存到本地
4:在客戶端沒有安裝pdf閱讀器的情況下,瀏覽器會直接提示用戶是否下載,這也是和需求不符的。
最後經過不懈努力,找到了一個用<object></object>曲線救國的路線,哈哈,先來看看如下代碼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<tr><td>
<p style="margin-top:-45px;margin-bottom:0px;">
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" id="Pdf1" width="100%" height="100%">
<param name="_Version" value="327680">
<param name="_ExtentX" value="2646">
<param name="_ExtentY" value="1323">
<param name="_StockProps" value="0">
<param name="SRC" value="C:\temp.pdf">
</object>
</p>
</td></tr>
</body>
</html>
復制代碼
其中sytle的是用一種比較bt的辦法影藏了pdf頂部的工具欄(可以用第一種方法,這個方法作為備用)。
這樣即使用ie菜單欄中的保存功能也只是保存網頁布局而不會把pdf保存下來。
另外這樣即使本地沒裝pdf閱讀器也不會讓你下載該pdf了,而只是在相應位置出現叉叉而已。基本能夠滿足客戶的需求了
❺ 如何把 JSP 文件轉換為PDF文件
只要是可以列印,就可以使用虛擬列印機來處理:
方法一:使用虛擬列印機pdf factory即可,而且其他格式文件只要是能夠列印,選擇這個虛擬列印機,都可以做成PDF文件,很簡單實用;
方法二:用其他虛擬列印機轉成PDF文件。
實在不能列印,還可以截屏嘛,然後按照下面的方法做出PDF的:
方法一:使用虛擬列印機pdf factory即可,而且其他格式文件只要是能夠列印,選擇這個虛擬列印機,都可以做成PDF文件,很簡單實用;
方法二:使用FreePic2Pdf軟體,進行批量轉換;
方法三:用其他虛擬列印機轉成PDF文件。