标签:
1、通过iText生成pdf文件(包含中文)参照:http://my.oschina.net/sanji/blog/277704
1)下载jar包:
CORE 包:http://sourceforge.net/projects/itext/files/
XML 包:http://sourceforge.net/projects/xmlworker/files/
2)前端页面
<input type="button" style="position:absolute;top:55px;right:20px;background:url(resources/images/20150203052448221_easyicon_net_48.png) no-repeat;width:48px;height:48px;cursor:pointer;border:0px;" onclick="download(‘ + id + ‘)"/>
function download(id) {
window.open("service.do?method=download&id=" + id);
}
3)后台代码
@RequestMapping(params = "method=download")
public void download(@RequestParam("id") Integer id, HttpServletRequest req, HttpServletResponse response) {
ServiceInfoEntity serviceItem = configCategoryService.getServiceItem(id);
String newsContent = "<div id=‘pano_camera‘ class=‘servie_info1‘><h3>" +
serviceItem.getNewsTitle() +
"</h3>" +
serviceItem.getNewsContent() + "</div>";
newsContent = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" + newsContent;
// newsContent = newsContent.replaceAll("\240$", "");
// newsContent = "<html><body>123</body></html>";
String path = req.getRealPath("/") + "resources"+ File.separator + "pdf";
String filename = serviceItem.getNewsTitle();
FileOutputStream fos;
try {
fos = new FileOutputStream(path + File.separator + filename + ".html");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
osw.write(newsContent);
osw.flush();
fos.close();
osw.close();
ParseHtmlAsian.createPdf(path, filename);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File file = new File(path + File.separator + filename + ".pdf");
// try {
//
// PDFReport.exportPdfFile(newsContent, req.getRealPath("/"), serviceItem.getNewsTitle());
// } catch (IOException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
byte[] buf = new byte[1024 * 1024 * 10];
int len = 0;
ServletOutputStream ut = null;
BufferedInputStream br = null;
response.reset();
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "must-revalidate, no-transform");
response.setDateHeader("Expires", 0L);
String userAgent = req.getHeader("User-Agent");
boolean isIE = (userAgent != null) && (userAgent.toLowerCase().indexOf("msie") != -1);
String displayFilename = file.getName();
response.setContentType("application/x-download");
if (isIE) {
try {
displayFilename = URLEncoder.encode(displayFilename, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setHeader("Content-Disposition", "attachment;filename=\"" + displayFilename + "\"");
} else {
try {
displayFilename = new String(displayFilename.getBytes("UTF-8"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setHeader("Content-Disposition", "attachment;filename=" + displayFilename);
}
try {
br = new BufferedInputStream(new FileInputStream(file));
ut = response.getOutputStream();
while ((len = br.read(buf)) != -1)
ut.write(buf, 0, len);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
package com.superscene.vhscene.base;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
public class ParseHtmlAsian {
/**
* Creates a PDF with the words "Hello World"
* @param file
* @throws IOException
* @throws DocumentException
*/
public static void createPdf(String path, String fileName) throws IOException, DocumentException {
// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(new File(path + File.separator + fileName + ".pdf")));
// step 3
document.open();
// step 4
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream(path + File.separator + fileName + ".html"), Charset.forName("UTF-8"));
// step 5
document.close();
}
}
Java-No.07 SpringMVC下HTML内容导出PDF并下载到本地
标签:
原文地址:http://my.oschina.net/shma1664/blog/374973