抓取网页生成电子书(需要编辑的word文档的模板全部做成HTML页面,需要导入的jar包)

优采云 发布时间: 2022-01-28 03:06

  抓取网页生成电子书(需要编辑的word文档的模板全部做成HTML页面,需要导入的jar包)

  本来应该用pageOffice在线编辑、保存、转成PDF、完成签名。因为公司预算不够,无法购买pageOffice组件,只能想其他办法。

  需要编辑的word文档的模板是固定的,数量不大,但是格式要求比较严格,所以我决定把所有的模板都做成HTML页面,用iText组件来转换将 HTML 转换为 PDF。

  需要导入的jar包:

  

  首先,需要将模板制作成类似如下的页面。水平线上的数据可以动态填充和编辑。 Freemarker可以用来填充数据。

  

  要使页面可编辑,您可以使用 Html 的 contenteditable="true"

  

  因为页面可以动态编辑,所以我们需要获取编辑页面的源代码

  var outerHTML = document.documentElement.outerHTML;

  这里需要注意的是页面中的所有标签都需要关闭。如果没有关闭,iText组件在转换过程中会报错。页面中的字体需要是Arial,因为iText的转换需要字体文件的支持。所以你还需要在项目中或者服务器上准备好字体文件

  

  身体{

  边距:20px;

  字体系列:SimSun;

  }

  以下是后台收到页面源代码后的处理

  @RequestMapping("acceptPage")

@ResponseBody

public Map acceptPage(HttpServletRequest request) throws Exception {

Map map=new HashMap();

String text = request.getParameter("text");

//使用jsoup来对html源码进行解析,能够校验格式的完整性,并生成一个新的Document

org.jsoup.nodes.Document parse = Jsoup.parse(text);

Elements meta = parse.getElementsByTag("meta");

String html = parse.html();

for (Element link : meta) {//手动为一些标签添加闭合

String s = link.outerHtml();

String s1=s.replace("/>",">");

html=html.replace(s,s1+"");

}

Elements link1 = parse.getElementsByTag("link");

for (Element link : link1) {

String s = link.outerHtml();

String s1=s.replace("/>",">");

html=html.replace(s,s1+"");

}

html=html.replaceAll(" ","");

try {

String outputFile="E:\\test.pdf";

OutputStream os = new FileOutputStream(outputFile);

//中文宋体文件路径

String fontPath=StringUtil.trimSufffix(fontUrl, File.separator)+File.separator+"simsun.ttc";

//String fontPath= "C:\\simsun.ttc";

ITextRenderer render = new ITextRenderer();

ITextFontResolver fontResolver = render.getFontResolver();

fontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

render.setDocumentFromString(html);

render.layout();

render.createPDF(os);

os.close();

} catch (Exception e) {

e.printStackTrace();

map.put("state",1);

map.put("msg","文件转换失败!请联系管理员!");

return map;

}

}

  以下是对生成的PDF文件进行签名的操作,不再赘述

  

  这是最终生成的PDF,样式没问题,还实现了编辑保存功能。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线