html与css入门经典doc,HTML+CSS入门 flying-saucer如何利用HTML来生成PDF文件
本篇教程介绍了HTML+CSS入门 flying-saucer如何利用HTML来生成PDF文件,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门。
<
1、导入maven依赖
9.1.0
org.xhtmlrenderer flying-saucer-pdf ${flyingSaucer.version} org.xhtmlrenderer flying-saucer-core ${flyingSaucer.version}
2、利用Html来导出简单的PDF文件
@RequestMapping("/pdfLoad")
public void pdfLoad(@RequestParam("pdfHtmlData")String pdfHtmlData,@RequestParam("fileName")String fileName,@RequestParam("borswerInfo")String borswerInfo,
HttpServletRequest request,HttpServletResponse response){
log.info("pdfHtmlData:"+pdfHtmlData+";fileName:"+fileName+";borswerInfo:"+borswerInfo);
InputStream in=null;
OutputStream out=null;
try {
String tempPdfFile=FileUploadRestController.class.getResource("/").getPath();
tempPdfFile=tempPdfFile+"/public/upload/"+System.currentTimeMillis()+".pdf";
File dest=new File(tempPdfFile);
//检测是否存在目录
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdirs();
}
FileOutputStream tempout=new FileOutputStream(tempPdfFile);
//构建一个html页面(前台通过js来控制传递)
//根据Html页面来构建一个Document
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new ByteArrayInputStream(pdfHtmlData.getBytes("UTF-8")));
//根据Document来填充iTextRenderer
ITextRenderer iTextRenderer=new ITextRenderer();
iTextRenderer.setDocument(doc, null);
ITextFontResolver fontResolver = iTextRenderer.getFontResolver();
String pdfFontPath=FileUploadRestController.class.getResource("/plugins/pdf-font/simsun.ttf").getPath();//request.getSession().getServletContext().getRealPath("upload/pdf/font");
fontResolver.addFont(pdfFontPath,BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
iTextRenderer.layout();
//利用iTextRenderer生成pdf文件
iTextRenderer.createPDF(tempout);
tempout.flush();
tempout.close();
//文件下载
File downloadFile = new File(tempPdfFile);
//文件名
JSONObject borswerInfoObj=JSONObject.parseObject(borswerInfo);
if (null!=borswerInfoObj&&"ie".equals(borswerInfoObj.get("browser"))) {
fileName=java.net.URLEncoder.encode(fileName, "UTF-8");
fileName=fileName.replace("+", "%20"); //IE下文件名称带空格会转换为加号
response.setHeader("charset", "charset=UTF-8");
} else {
fileName=new String(fileName.getBytes(),Charset.forName("ISO8859-1"));
response.setHeader("charset", "charset=ISO8859-1");
}
//输出设置
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
response.setContentLengthLong(downloadFile.length());
in=new FileInputStream(downloadFile);
out=response.getOutputStream();
IOUtils.copy(in,out);
response.flushBuffer();
}catch (Exception e) {
e.printStackTrace();
}finally {
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
}
}
3、pdfHtmlData参数为
//导出PDF文件
$(‘body‘).delegate(".pdfLoad","click",function(){
WebIndex.queryParam.limit=10000;
Logger.info(WebIndex.queryParam);
$.ajax({type:‘post‘,url:webIface.rootUrl+‘/fileManager/list/‘,dataType: ‘json‘,data:WebIndex.queryParam}).done(function(data){
Logger.info(data);
if(data.code==1){
var ifile=$(‘body‘).find(‘#load-pdf‘);
var fileName="文件上传和下载列表.pdf";
//构造pdf打印html数据
var pdfHtmlData=‘‘;
pdfHtmlData+=‘‘;
pdfHtmlData+=‘
‘;
pdfHtmlData+=‘
2015-2016年度信息统计‘;
pdfHtmlData+=‘
pdfHtmlData+=‘ body{font-family:SimSun;margin: 5px;font-size:12px;text-align:center;}‘;
pdfHtmlData+=‘ table{border:0;border-top:1px solid #000;border-left:1px solid #000;width:100%;line-height:20px}‘;
pdfHtmlData+=‘ table thead{background-color:#EEE}‘;
pdfHtmlData+=‘ table td{border:0;border-bottom:1px solid #000;border-right:1px solid #000;padding:5px;white-space:nowrap}‘;
pdfHtmlData+=‘ .title{padding-bottom:20px;font-size:16px;text-align:center;width:100%;line-height:20px;}‘;
pdfHtmlData+=‘ .fl{padding-left:20px;text-align:left;}‘;
pdfHtmlData+=‘ @page{size:297mm 210mm;}‘;
pdfHtmlData+=‘ ‘;
pdfHtmlData+=‘ ‘;
pdfHtmlData+=‘
‘;
pdfHtmlData+=‘
‘;
pdfHtmlData+=‘
pdfHtmlData+=‘ 标号文件名上传人上传时间下载次数‘;
$.each(data.list,function(num,detail){
if(num!=0&&num%20==0){
pdfHtmlData+=‘
‘;
pdfHtmlData+=‘
pdfHtmlData+=‘
‘;
pdfHtmlData+=‘
pdfHtmlData+=‘ 标号文件名上传人上传时间下载次数‘;
}
pdfHtmlData+=‘
‘+(num+1)+‘‘+detail.fileName+‘‘+detail.uploader+‘‘+detail.loadDate+‘‘+detail.downLoadCount+‘‘;
});
pdfHtmlData+=‘
‘;
pdfHtmlData+=‘ ‘;
pdfHtmlData+=‘‘;
var borswerInfo=JSON.stringify(getBrowserInfo());
var time=Date.parse(new Date())/1000;
if(ifile.length==0){
var loadhtml=‘‘;
loadhtml+=‘
‘;
loadhtml+=‘ ‘;
loadhtml+=‘ ‘;
loadhtml+=‘ ‘;
loadhtml+=‘ ‘;
loadhtml+=‘
‘;
$(‘body‘).append(loadhtml);
ifile=$(‘body‘).find(‘#load-pdf‘);
}
ifile.find(‘.load-pdfHtmlData‘).attr("value",pdfHtmlData);
ifile.find(‘.load-fileName‘).attr("value",fileName);
ifile.find(‘.load-borswerInfo‘).attr("value",borswerInfo);
ifile.find(‘.load-time‘).attr("value",time);
ifile.submit();
}
}).fail(function(erorEvent){
alert(erorEvent.statusText);
});
WebIndex.queryParam.limit=8;
});
本文由职坐标整理发布,欢迎关注职坐标WEB前端HTML/CSS频道,获取更多HTML/CSS知识!
html与css入门经典doc,HTML+CSS入门 flying-saucer如何利用HTML来生成PDF文件相关推荐
- c语言入门经典doc,C语言入门经典C语言编程.ppt
C语言入门经典C语言编程.ppt 第01章 C语言编程,C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序即一组指令,并让计算机依指令行事 ...
- c语言入门经典案例,c语言入门经典案例及飞源代码.doc
c语言入门经典案例及飞源代码 循环控制输出图案 [程序1]题目:输出9*9口诀.1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列.2.程序源代码:#include "stdio.h ...
- python编程入门经典教程-python编程入门经典
第七章主要是文件操作相关,这么看用python---便,是一个不错的工具. <Python编程入门经典>主要内容:介绍用于存储和操作数据的变量的概念:讨论用于读写数据的文件和输入/输出:总 ...
- mysql入门经典 王雨竹_MySQL入门经典
<MySQL入门经典>以初学者为核心,全面讲解MySQL数据库技术.在内容安排上由浅人深,让读者循序渐进地掌握编程技术:在内容讲解上结合丰富的图解和形象的比喻,帮助读者理解晦涩难懂的技术: ...
- android入门经典dvd,Android开发入门经典实例 - My notes
/* Android开发入门经典实例 */ My notes /* 安卓开发入门 */ 涉及到了Android开发中的一些关键知识,比如: 配置开发环境 App中一个屏幕的抽象: Activity 屏 ...
- python3入门经典100例-Python3入门机器学习_经典算法与应用-慕课网实战
建议慕课网可以出一套完整的关于学完之后可以胜任人工智能这份工作的课程,达到就业的目的和转型 亲,您好~目前我们在筹划更多的人工智能的相关课程!后期会逐步的跟大家见面!不过本门课程就是您迈入机器学习领域 ...
- python入门经典电子书-python从入门到精通pdf
pythonpdf是一款专注于python的电子图书,python一种面向对象的解释型计算机程序设计语言,而这款电子书就详细讲解了python相关知识,由浅入深,对初学者来说非常的实用.感兴趣的朋友欢 ...
- python编程入门经典实例-Python编程语言入门经典案例
[程序1] 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 1#!/usr/bin/python 2#-*- coding:utf-8 -*- 3#there is no + ...
- python3入门经典100例-Python3入门经典100例
最近由于人工智能和编译原理实验,决定要学python3.不为别的,就是因为自己语言基础太差,现学现卖只能用python了.网上看了一圈python的例题,都只有python2的,于是自己决定把pyth ...
最新文章
- usaco Cowxor (trie 树)
- nyoj——297(期望)
- 计算机应用基础是高中吗,职业高中学业水平测试计算机应用基础试卷(A)及答案...
- 条件概率分布_条件概率
- 中国呼叫中心产业五大关键技术
- bzoj 2761: [JLOI2011]不重复数字【hash】
- DCMM GBT 36073-2018 数据管理能力成熟度评估模型(Word版)
- 2019软博会:和利时将展示在智能工厂等行业的解决方案
- matlab用prewitt算子,canny算子边缘检测_prewitt算子_matlab怎么中值滤波
- matlab打开界面模糊,matlab模糊逻辑(一)
- depts: deep expansion learning for periodic time series forecasting
- DNS服务器ttl修改不生效,中科三方DNS专家手把手教学——定位域名解析不生效问题...
- Android 监控APP是否在后台运行
- 2021-05-21 qt程序aas运行失败提示undefined symbol: _Z34QBasicAtomicInt_fetchAndAddOrderedPVii问题
- linux centos 手册,zh/FAQ/CentOS4 - CentOS Wiki
- JavaScript 常见鼠标事件
- 互联网公司招聘黑话大全
- 将VMware 虚拟磁盘文件vmdk直接挂到win系统下的方法
- 发现一个很不错的东西!--百度网盘外链,下载速度很不错
- XCode7 无需开发者账号真机调试
热门文章
- 104键键盘布局高清示意图
- php获取哔哩哔哩追番_自己拥有一台服务器可以做哪些很酷的事情?
- 级联失效matlab,加权无标度网络的级联失效模型
- 一个简单的Hello World程序
- macbook新建html文件,New File Creation: 给 Mac 加上“新建文件菜单”
- 御坂御坂题解(出自北航校赛) 约瑟夫环问题高效解决方案
- java8 协程_Java8 异步编程—CompletableFuture
- 卡马克快速平方根(平方根倒数)算法(转)
- PhoenixFD 液体
- 区块链技术与应用-BTC