wkhtmltopdfhtml php生成pdf快照,网页截图,网页快照完整版 (原)
首先,安装(linux安装为例)
1、下载wkhtmltopdf
tar jxvf wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2 -C /opt
## For RHEL/CentOS/Fedora 64-Bit OS ##
# cd /opt
# mv wkhtmltopdf-amd64 wkhtmltopdf
# mv wkhtmltopdf /usr/local/bin
程序代码调用wkhtmltopdf生成PDF(php为例)
$pdf_file_name = 'test.pdf'; //生成文件名
$pdf_url = "/web/Public/img_sync/"; //生成文件存储路徑(服务器绝对路径)
$url = "http://test.com.cn/index.php?s=/Business/Pcvisa/showlist_test/list.html"; //源网页(需要生成pdf的网页地址,外网能访问的页面地址)
$h = '';
$h = " -O landscape "; //pdf横向页面不够,该设置是把页面纵向变横向,不需要则不设置即可
shell_exec("wkhtmltopdf " . $h . $url . " " . $pdf_url.$pdf_file_name);
实践中可能遇到的问题(博主遇到的问题及解决办法)
1.源网页需要验证登录状态
调用wkhtmltopdf程序,实际就是通过代码程序调用linux的应用程序(我是这么理解,有错误可以提),所以对于源网页是一些需要验证登录的页面,直接生成会因为登录问题生成失败,我们系统进入网页没有登录会直接一个
弹窗然后跳去登录,所以我生成出来的pdf就是页面中间一个您未登录请先登录的弹窗,解决办法就是看怎么把这个源网页跳过登录页吧,移出去无需验证登录的控制器或者自己配跳过登陆验证,不解释太多
2.缺字,少字,字体不统一,乱码
缺字少字字体空白八九不离十就是字体问题,比如源网页字体设置是宋体,而我们linux服务器字体包没有宋体,就会导致这些问题(我导出的时候是先遇到了缺字,缺字解决后,又遇到了字体不统一),以下看解决办法:
linux 下 fc-list //查看字体列表,确实发现并没有楷体(源网页html字体设置是楷体)
- yum -y install fontconfig //我的机器已经安装过
- 查看 /usr/shared/ 下有 fonts、fontconfig两个目录
- 将window下的字体复制出来,在C:\Windows\Fonts目录下。
我复制了两个字体,“楷体 常规”,“宋体 常规”,复制到桌面后,文件名分别为“simkai.ttf”、“simsun.ttf” - 在 /usr/shared/fonts 下新建目录chinese,将两个字体文件导入
- yum -y install ttmkfdir //这个也是已经安装过了
- 执行命令 ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
- 配置文件
3.由于页面默认是正A4大小,有的表格过长,生成不完整
上面代码写了,加参数配置让生成pdf纸张横向 wkhtmltopdf -O landscape www.baodu.com bd.pdf
wkhtmltopdfhtml php生成pdf快照,网页截图,网页快照完整版 (原)的更多相关文章
- VC2008如何生成及使用DLL(图文并茂,完整版)
博客分类: Dot net VC2008 DLL Dot net 生成.使用DLL看起来简单,但做起来才发现还是有一些地方需要注意的. 1. 打开VS2008,新建一个VC工程,选择Win32类型 ...
- 使用html2canvas实现网页截图,并嵌入到PDF
使用html2canvas实现网页截图并嵌入到PDF 以前我们只能通过截图工具进行截取图像.这使得在业务生产中,变得越来越不方便.目前的浏览器功能越来越强大,H5也逐渐普及,浏览器也可以实现截图了.这 ...
- Django生成PDF显示在网页上以及解决中文显示乱码的问题
项目地址:https://github.com/PythonerKK/django-generate-pdf/tree/master 这个demo实现了通过用户输入自己的个人信息生成一份简历pdf,来 ...
- pypdf2:下载Americanlife网页生成pdf合并pdf并添加书签
初步熟悉 安装 pip install pypdf2 合并并添加书签 #!/usr/bin/env python3.5 # -*- coding: utf-8 -*- # @Time : 2019/1 ...
- 实践指南-网页生成PDF
一.背景 开发工作中,需要实现网页生成 PDF 的功能,生成的 PDF 需上传至服务端,将 PDF 地址作为参数请求外部接口,这个转换过程及转换后的 PDF 不需要在前端展示给用户. 二.技术选型 该 ...
- 使用puppeteer生成pdf与截图
之前写过一篇 vue cli2 使用 wkhtmltopdf 踩坑指南,由于wkhtmltopdf对vue的支持并不友好,而且不支持css3,经过调研最终选择puppeteer,坑少,比较靠谱. 一. ...
- tcpdf 将网页生成pdf
需求:需要将HTML页面生成PDF文档 开发语言:PHP 使用TCPDF第三方类库进行生成,下载地址:http://sourceforge.net/projects/tcpdf/ 核心代码: publ ...
- 有了 serverless,前端也可以快速开发一个 Puppeteer 网页截图服务
更多云原生技术资讯可关注阿里巴巴云原生技术圈. Puppeteer 是什么? puppeteer 官网的介绍如下: Puppeteer is a Node library which provides ...
- 使用PhantomJS实现网页截图服务
这是上半年遇到的一个小需求,想实现网页的抓取,并保存为图片.研究了不少工具,效果都不理想,不是显示太差了(Canvas.Html2Image.Cobra),就是性能不怎么样(如SWT的Brower). ...
随机推荐
- CSUST 2012 一个顶俩 (本校OJ题)(思维+树链剖分)
(点击这里查看原题,不保证可以进去....外网可能比较卡) Description A:一心一意 B:一个顶俩 最近QQ更新后那个成语接龙好像挺火的?但我只知道图论里一条边是一个顶俩个点的emm. 如 ...
- Centos8 重启网卡方法
问题情况: 1.虚机centos8 修改为静态ip后,由于网卡网段变更,无法上网 2.最小化安装,没有ifconfig 3.firewalld,selinux关闭 4.ping 不通物理机 根本原因: ...
- opencv学习之读取图像-imread函数
序 想要完整全面地学习opencv,仅凭阅读samples的示例源码是不够的.毕竟opencv是一个拥有非常多函数的程序库,所以在每学习一个函数时,芒果觉得有必要记录下来,分享给有需要的同学.于是,就 ...
- 从入门到自闭之Python递归
递归:不断地调用自身,用函数实现 死递归(死循环): def func(): print(1) func() func() 知识点:官方说明最大深度1000,但实际执行998或997以下,看电脑性能 ...
- shell脚本获取的参数
$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表
- 剑指offer-孩子们的游戏(圆圈中最后剩下的数)-知识迁移能力-python
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- python+minicap(二)
一.push文件至手机中 minicap 的使用有很强的针对性,针对不同架构的CPU和SDK制作了不同的 "minicap" 和 "minicap.so" 文件 ...
- 06 基本数据结构 - 双端队列(Deque)
一.双端队列(Deque) - 概念:deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. - 特性:deque 特殊之处在于添加和删除项是非限制 ...
- java中的全局变量、局部变量与静态常量的区别
java中的变量类型分类: 类变量:独立于方法之外的变量,用 static 修饰.实例变量:独立于方法之外的变量,不过没有 static 修饰.局部变量:类的方法中的变量.比如: public cla ...
- Vue-cli脚手架起步
1.安装node.js 下载地址:http://nodejs.cn/download/ 测试是否安装成功 node -V 检测安装包 npm -v 检测npm 2.安装webpack npm inst ...