Ⅰ 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();
}
Ⅱ 怎麼樣把一個復雜jsp頁面轉換成pdf
最簡單而且實用的使用虛擬列印機pdf factory即可,可以把任意只要能夠列印的格式文件都可以做成PDF文件,並且可以把多個文件通過列印之後合成一個PDF文件。
pdfFactory Pro(虛擬列印機)是一個無須 Acrobat 創建 Adobe PDF 文件的列印機驅動程序。pdfFactory Pro(虛擬列印機)提供的創建 PDF 文件的方法比其他方法更方便和高效。 功能包括: 多個文檔整合到一個 PDF 文件中; 內嵌字體; 通過 E-mail 發送; 預覽; 自動壓縮優化。
PDF Factory是pdf虛擬列印機軟體,下載安裝好PDF Factory後,我們在列印機控制面板中就可以找到一台由pdf Factory虛擬出來的列印機,可以把任何可以列印的文件轉換成pdf文件。用任何可以支持列印輸出的軟體,把需要處理的文件逐個列印到這個虛擬列印機,全部列印完成後可把結果保存成一個pdf文件。甚至可以把不同軟體格式的文件,如word、excel、photoshop等任何可以支持列印的文件,列印到同一個pdf文件。
在列印之前,在PDF Factory Pro裡面設置一下PDF的打開、列印等許可權即可實現加密等目的;
在列印之前,在設置裡面,就把載入所有的系統字體選中。
在列印界面出來後,可以在左側設置水印。然後再保存PDF文件。
列印完畢後,下載一個Adobe Reader,然後安裝,可以很流暢的閱讀PDF文件。
Ⅲ wkhtmltopdf 把jsp轉換成pdf輸出為什麼是空的
因為jsp不是一個靜態的網頁文件,jsp本質是servlet,所以轉成pdf的時候有可能會有問題;
如果您要列印該網頁,可以直接右鍵保存到本地就行了。
Ⅳ 點擊按鈕,jsp頁面數據變成pdf保存到本地,用什麼實現拜託各位大神
iText 其實Jasper Report是基於iText的。於是有的人會說,那麼直接使用iText不是一種倒退么?的確,直接使用iText似乎就需要直接使用原生的API進行編程了。不過幸好iText其實提供了一些方便的API,通過使用這些API,我們可以直接將HTML代碼轉化成iText可識別的Document對象,從而導出PDF文檔。 import java.io.FileOutputStream; import java.io.FileReader; import java.util.ArrayList; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.html.simpleparser.HTMLWorker; import com.lowagie.text.html.simpleparser.StyleSheet; import com.lowagie.text.pdf.PdfWriter; public class MainClass { public static void main(String[] args) throws Exception { Document document = new Document(); StyleSheet st = new StyleSheet(); st.loadTagStyle("body", "leading", "16,0"); PdfWriter.getInstance(document, new FileOutputStream("html2.pdf")); document.open(); ArrayList p = HTMLWorker.parseToList(new FileReader("example.html"), st); for (int k = 0; k < p.size(); ++k) document.add((Element) p.get(k)); document.close(); } } 這是從網上找到的一個例子。從代碼中,我們可以看到,iText本身提供了一個簡單的HTML的解析器,它可以把HTML轉化成我們需要的PDF的document。
滿意請採納
Ⅳ 誰用過JAVA把JSP頁面導出為PDF格式文件
xml+xsl結合輸出pdf