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 的相关文章

  • javascript中输入类型时间的值

    我有这个html
  • 使用 javascript 禁用按钮:FF 与 IE

    我有一排按钮 它们都会创建一个我想在新选项卡中打开的 pdf 文件 这样按钮页面就会保持在顶部 并且 pdf 会打开以进行打印 为了防止单击按钮两次 我禁用该按钮 如下所示 我使用 python
  • 如何在 Java 中使用 HTML 解析器和 Apache Tika 来提取所有 HTML 标签?

    我下载了 tika core 和 tika parser 库 但找不到将 HTML 文档解析为字符串的示例代码 我必须删除网页源的所有 html 标签 我能做些什么 如何使用 Apache Tika 进行编码 您想要 html 文件的纯文本
  • 使用php表单更改href链接

    我正在制作一个带有搜索栏的网站 我想让搜索栏在 搜索 并显示结果后具有交互性 所以我希望 href 根据正在使用的 Id 进行更改 例如 有人搜索 Pinecones 如果它在数据库中 它将有一个 ID 在本例中是 4 一旦他们搜索它 它就
  • 使用 PHP 获取 2 个同名 HTML 输入标签的值

    假设我有下表
  • div Hello div div Howdy dere pardner div div div 我明白它的作用 但为什么叫这个名字both 什么是both mean 两者的意思是 一组两件事中的每一项 左 和 右 两件事
  • 将 div 文本分配给变量然后显示它

    我有一个简单的任务 我试图完成学习 JavaScript 但一直无法找到明确的答案 这是代码 div Testing div 基本上我希望将方框 div 中的文本存储到变量中 然后 我想在页面的不同部分显示该变量的文本 使用上面的代码我得到
  • 如何保留用户的输入打印?

    我正在尝试添加用户的评论 所以我只是尝试读取输入并将其发送以进行打印 但问题是 一旦我刷新页面或输入另一个输入 打印的输入就会消失 因此 即使刷新页面或重新输入新评论 我也希望始终保持所有用户的显示 代码 div div
  • 理解 z-index:该元素如何出现在其父级同级元素的前面?

    为什么当我删除时红色 div 位于绿色 div 前面z index from wrapperRed 感觉像z index是沿着链条向上继承的 如果我改变z index将绿色 div 更改为 6 即使删除第一句中描述的行后 它仍保留在红色 d
  • 古老的“字幕”标签的替代品?

    marquee 标签的标准等效项是什么 我正在寻找 HTML C asp NET 或 ASPX jquery java 脚本的解决方案 marquee 标签未包含在标准中 因为它是 视觉 标签 而不是 语义 标签 因此 您想要的任何语言都没
  • 链接无效

    我正在尝试使用以下命令创建一组指向页面中特定部分的链接 a href 符号 但它似乎不起作用 点击链接似乎没有任何反应right click gt open in a new tab更改 url 但不会移动到页面的其他部分 我使用的是火狐浏
  • 使用 python 在一个 html 页面中显示分割数据框的 HTML 代码

    我是 html css 新手 所以对以 html 格式显示的数据有疑问 我有一个很长的列表 我想将其拆分并以 html 格式显示为两个单独的列 例如 而不是 Col1 Col2 1 a 2 a 3 a 4 a 5 b 6 b 7 b 8 b
  • html 电子邮件内的背景图像 css - Gmail 不支持

    我想向我的用户发送如下所示的带有背景图像 css 的 html 正文电子邮件 div style width 500px height 1000px background color black background image none
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet

随机推荐

  • 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