通过关键词采集文章采集api(报表开发神器:phantomjs生成网页PDF,Echarts报表实战导航)

优采云 发布时间: 2021-09-11 23:09

  通过关键词采集文章采集api(报表开发神器:phantomjs生成网页PDF,Echarts报表实战导航)

  报表开发神器:phantomjs生成网页PDF,Echarts报表实战

  导航:

  一. 关于phantomjs 1.1 什么是phantomjs?

  (1)一个基于webkit内核的无头浏览器,即没有UI界面,即是浏览器,但需要设计和设计与人相关的点击、翻页等操作实施。

  (2)提供了javascript API接口,即可以通过编写js程序直接与webkit内核交互。在此基础上还可以结合java语言等,通过调用js等相关操作java,从而解决了之前c/c++天赋最好基于webkit开发高质量的采集器限制。

  (3)提供windows、linux、mac等不同操作系统的安装和使用包,这意味着采集项目可以在不同平台上重新开发或自动项目测试。

  1.2 phantomjs 常用API介绍

  常用的几个主要内置对象

  通用API

  注意事项

  使用总结:主要是java se+js+phantomjs的应用,

  1.3 我可以用 phantomjs 做什么?

  生成的PDF基本恢复了原来的风格,图文分离,不是直接截图;如果有生成PDF的需求,可以考虑如何生成和使用phantomjs来实现功能;我已经用Html模板生成了Html页面,然后把这个页面上传到FastDfs服务器,然后通过返回的url直接生成这个pdf,就完成了与html页面一致的pdf生成功能;

  二. Windows 下安装phantomjs 2.1 概览2.1 下载安装phantomjs 测试是否安装成功:三. Linux 下安装phantomjs 3.1 概览3.2 安装过程如下:

  进入里面后,可以执行js命令,如果需要退出,按Ctrl+C强制退出

  解决中文乱码(可选,遇到这个问题可以解决) 正常例子:(Windows下显示正常如图:) 错误例子:(Linux下乱码显示为如图:) 解决方法:在Linux下执行命令:

  yum install bitmap-fonts bitmap-fonts-cjk

  执行此命令后,可能只显示中文,但数字仍会显示空格。如果有数字显示空格,将所有windows字体导入Linux,见下。

  导入字体:四.使用Phantomjs生成Echarts图片4.1 概述:Linux下:

  Windows 和 Linux 环境的区别: ① 配置环境变量。因为phantomjs的启动方式,windows执行的是exe文件,而Linux不是,所以配置好环境变量后,java在机器上和Linux下测试不需要做任何修改; ② Phantomjs 执行生成 Echarts 图片时,需要引用 jquery.1.9.1.min.js ,echarts-convert.js, echarts.min.js 并生成 Echarts js文件。这些js是需要引用的,在Linux上部署的时候,生成的js文件在jar包里,可能不可读。我们可以通过代码将js文件复制到jar包的同级目录下,然后通过路径加载。可以使用以下代码读取和生成路径加载:

  ~~~java

  /* 生成模板到指定位置判断文件是否存在,如果不存在则创建 */

  文件 echartsfile = new File(System.getProperty("user.dir") + "\echarts-all.js");

  if (!echartsfile.exists()) {

  FileUtil.file2file("js/echarts-all.js", System.getProperty("user.dir") + "\echarts-all.js");

  }

  ~~~

  4.2 作者实现思路: 第二步:整理思路:生成需要生成的Echarts js代码:找到相关的Echarts图片模板:Echarts官网使用Framework等技术:生成一个final来自模板+数据的js文件;以Framework为例:将另外三个js文件放在其他位置,博主的做法是将这三个放在jar包目录下,但是会有phantomjs无法读取和执行的情况(即phantomjs除外) code可以读取内容,但是phantomjs的执行不能通过引用读取)。所以博主拿的是先把它读出来,然后写出jar包供参考;这样Linux下就可以通过路径读取了;阅读代码示例:

   /* 将模板生成到指定的位置 判断文件是否存在,如果不存在则创建 */

File echartsfile = new File(System.getProperty("user.dir") + "\\echarts-all.js");

if (!echartsfile.exists()) {

FileUtil.file2file("js/echarts-all.js", System.getProperty("user.dir") + "\\echarts-all.js");

}

File jsfile = new File(outPathAndName);

if (!jsfile.exists()) {

FileUtil.string2File(outPathAndName, echartTemplate.getFileContent()); // 将js文件生成到指定的位置

}

File convertfile = new File(System.getProperty("user.dir") + "\\echarts-convert.js");

String echartsPath = System.getProperty("user.dir") + "\\echarts-convert.js";

if (!convertfile.exists()) {

FileUtil.file2file("js/echarts-convert.js", echartsPath);

}

File jqueryfile = new File(System.getProperty("user.dir") + "\\jquery.1.9.1.min.js");

if (!jqueryfile.exists()) {

FileUtil.file2file("js/jquery.1.9.1.min.js", System.getProperty("user.dir") + "\\jquery.1.9.1.min.js");

}

  关键代码:System.getProperty("user.dir")为Windows或Linux下的当前路径,百度可以使用。

  将现有的echarts-convert.js等文件+生成的Echarts.js文件与数据和Demo示例代码结合,生成Echarts图片;我们可以将Echart图片上传到Fastdfs等图片服务器,只需获取网络图片url即可;当然最后一步取决于业务需求; 五.使用Phantomjs生成PDF文档(HTML转PDF)5.1概述5.2生成原理5.3扩展思路六.使用Phantomjs+Poi.tl生成Word文档6.1概述6.2 想法

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线