phantomjs实现html生成pdf

2023-11-04

phantomjs实现html生成pdf

实现比较简单,同时能够实现对页面的完全展示成pdf,但是生成的时间比较长且并发很差,很容易直接挂掉

以下是实现:

1.下载phantomjs-2.1.1-windows并解压到本地路劲

2.实现java代码

 

/**
* 通过phantomjs实现html生成pdf
* @param url  页面的url 得到html生成pdf
* @param phantomjs 运行
* @param jsFile   处理的js
* @param cookieNname  用户cookie
* @param cookieValue  用户值
* @param renderPath   生成pdf的路劲
* @param domain       cookie的url的Host
* @param size         pdf的页面大小
*/
public static void creatPDF(String url,String phantomjs,String jsFile,String cookieNname,String cookieValue,String renderPath,String domain,String size){
try {
Runtime rt = Runtime.getRuntime();
String exec = phantomjs + " " + jsFile + " " + url + " " + cookieNname + " " + cookieValue + " " +renderPath + " " + domain + " " + size;
rt.exec(exec);
}catch(Exception ex){
ex.printStackTrace();
}
} 


对应jsFile

system = require('system')  
address = system.args[1];
var page = require('webpage').create();  
var url = address; 
var name = system.args[2];
var value = system.args[3];
var warrantyCard = system.args[4];
var size = system.args[6].split('*');
var dpi = 72.0, dpcm = dpi/2.54;
var widthCm = size[0], heightCm = size[1]; // A4
//page.viewportSize = { width: Math.round(widthCm * dpcm), height: Math.round(heightCm * dpcm) };
page.paperSize = {width: widthCm+'cm', height: heightCm+'cm', orientation: 'portrait', margin: '0.4cm' };
page.settings.dpi = dpi;






page.settings.loadImages = true;
page.settings.resourceTimeout = 30*1000; // 5 seconds
page.onResourceTimeout = function(e) {
    phantom.exit(1);
};




phantom.addCookie({
  'name'     : name,   /* required property */
  'value'    : value,
  'domain'   : 'www.baidu.com'       //Host:www.baidu.com
}); 
page.open(url, function (status) {  
    


window.setTimeout(function () {
 page.clipRect = { top: 0, left: 200, width: 400, height: 300 }
 page.render(warrantyCard);  //截图
 console.log(page.content);
 phantom.exit();
  }, 3000);   
    
});




关于生成的pdf规定A4 但是html页面过大问题 ,pdf只能展示页面的一部分宽度  可以在html中添加css zoom:0.7 按情况给百分比


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

phantomjs实现html生成pdf 的相关文章

随机推荐

  • project 2007项目管理软件

    Microsoft Office Project 2007 项目管理软件 Microsoft Project 2003 2007是国际上最为盛行的基于网络的项目管理软件 在各类IT集成及开发项目 新产品研发 房地产项目 设计项目 工程建设项
  • Java性能调优笔记

    Java性能调优笔记 调优步骤 衡量系统现状 设定调优目标 寻找性能瓶颈 性能调优 衡量是否到达目标 如果未到达目标 需重新寻找性能瓶颈 性能调优结束 寻找性能瓶颈 性能瓶颈的表象 资源消耗过多 外部处理系统的性能不足 资源消耗不多但程序的
  • JSON中的key下划线与驼峰互转

    JSON中的key下划线与驼峰互转工具类 1 JSON中的key 下划线转驼峰 public final static Object underlineToHump String json Object obj JSON parse jso
  • WebGL射击游戏的优化

    myshmup com 允许在浏览器中创建 shmup 射击 游戏 我们可以使用具有创意通用许可证的资源或上传自己的艺术作品和声音 创建的游戏可以在网站上发布 该平台不需要编码 游戏对象的配置是在用户界面的帮助下执行的 后端是使用Djang
  • Spring MVC结果转换

    一 返回视图 ModelAndView 1 视图路径 默认在当前Control的路径下 表示项目部署的根目录 例如 new ModelAndView home jsp 返回的路径是 user home jsp new ModelAndVie
  • 实现一个最小的操作系统

    实现一个最小的操作系统 本实验在Vmware虚拟机的Linux环境下完成 准备工作 硬件 VMware下Linux虚拟机 Ubuntu 18 04 5 LTS 软件 汇编编译器NASM 软盘绝对扇区读写工具 dd命令 VMware的安装以及
  • 机器人基础原理1_2——机器人分类与常见坐标系

    机器人分类与常见坐标系 1 机器人的分类 1 按辈分 2 对应人的不同器官 3 按其构成机构 3 按驱动方式不同 4 按用途分类 2 常见的坐标系及对应的机器人结构 2 1 笛卡尔坐标系 2 2 圆柱坐标系 2 3 球坐标系 1 机器人的分
  • ThoughtWorks(中国)程序员读书雷达

    软件业的特点是变化 若要提高软件开发的技能 就必须跟上技术发展的步伐 埋首醉心于项目开发与实战 固然能够锤炼自己的开发技巧 却难免受限于经验与学识 世界上并不存在速成的终南捷径 但阅读好的技术书籍 尤其是阅读大师们的经典著作 总能收到事半功
  • Zabbix学习笔记(一)---Zabbix的安装

    目录 前言 一 Zabbix简介 二 下载与安装 1 CentOS 9安装 2 安装zabbix A 安装Zabbix包 B 安装Zabbix server 前端 Agent C 设置httpd D 安装数据库 总结 前言 近期学习网络运维
  • vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速

    如何在vue中引入高德地图在这里就不过多赘述 大家可以看这篇参考在vue中引入高德地图 说正事 使用高德地图实现轨迹回放 并能实现倍速控制 具体效果如图 核心代码 绘制小车 this marker new AMap Marker posit
  • ElasticSearch入门

    ElasticSearch概述 ElasticSearch 简称es es是一个开源的高扩展式全文检索引擎 它可以近乎实时的存储 检索数据 本身扩展性很好 可以扩展到上百台服务器 处理PB级别的数据 ElasticSearch安装 声明 j
  • Qt 学习之旅 ----可移动的无边框圆角窗口

    Qt 默认的窗口会有系统自带的边框 如图 但是在大多数情况下 系统自带的边框是不需要的 去掉边框很简单 在建立窗口时 加入如下一个函数 w setWindowFlags Qt FramelessWindowHint 这样 边框就被去掉了 但
  • win7安装计算机的更新,解决win7系统更新升级教程

    操作系统是一个复杂的程序 在使用过程中也需要不断的更新 修复漏洞 但是很多朋友都会将win7系统的自动更新关闭 我给大家带来了win7系统更新升级的小方法 大家可以参考一下 win7系统可以说是目前最易用的操作系统 它增加了一些小功能 如快
  • DevOps B站学习版(一)

    学习地址 01 DevOps的诞生 哔哩哔哩 bilibilihttps www bilibili com video BV1Pt4y1H7Zq p 1 vd source 1f09c23f556b3d6a9b7706f8db12fa54
  • 人类的行为与程序计算

    胡言乱语 引子 人类从出生伊始都在面临着生活中的种种问题 人类无时无刻不在进行着问题的解决过程 程序从设计之初也是用来解决生活中特定问题的 那么人类行为与程序计算理论之间又有什么相似性呢 人类 人类所面临的问题 人类解决问题的过程 人类解决
  • vue 按钮 路由

    APP vue 在已有的按钮上加上路由功能 这里的按钮和布局容器使用了 elementui 的但无关原理 按下按钮即可跳转页面
  • 雷达测高知识点总结

    1 激光和雷达的区别 雷达 radar radio detection and ranging 无线电探测和测距 雷达波段 雷达发射电波的频率范围 大多数雷达工作在超短波及微波波段 其频率范围在30 300000兆赫 相应波长为1mm 10
  • 利用PyTorch自己动手从零实现YOLOv3(详细注释)

    学习一个算法最好的方式就是自己尝试着去实现它 因此 在这片博文里面 我会为大家讲解如何用PyTorch从零开始实现一个YOLOv3目标检测模型 参考源码请在这里下载 模型实现总共会分为以下六部分 一 配置文件以及解析 二 搭建YOLO模型框
  • 哈希结构(图文详解)【哈希表,哈希桶,位图,布隆过滤器】

    哈希结构 哈希概念 常见的K V结构 实现了元素关键码与元素值的映射关系 但没有实现元素关键值与元素存储位置的映射关系 在遍历过程中 一般的顺序表或搜索二叉树要进行关键值的多次比较 其中顺序表的时间复杂度为O n 二叉搜索树的时间复杂度O
  • phantomjs实现html生成pdf

    phantomjs实现html生成pdf 实现比较简单 同时能够实现对页面的完全展示成pdf 但是生成的时间比较长且并发很差 很容易直接挂掉 以下是实现 1 下载phantomjs 2 1 1 windows并解压到本地路劲 2 实现jav