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). ...
随机推荐
- 完全删除MySQL及相关软件
一.删除mysql服务 个人认为首先删除mysql服务最重要,这个多数人会忘记如何删除 首先是查看自己的mysql服务名,需要用这个服务名进行删除 进入命令行 二.卸载mysql,workbench等 ...
- FFmpeg4.0笔记:封装ffmpeg的解码功能类CDecode
Github https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff CDecode.h /********************** ...
- 矩阵快速幂(Matrix_Fast_Power)
一.基础知识(1)矩阵乘法 https://blog.csdn.net/weixin_43272781/article/details/82899737 简单的说矩阵就是二维数组,数存在里面,矩阵乘法 ...
- Codeforces 1190C. Tokitsukaze and Duel
传送门 注意到后手可以模仿先手的操作,那么如果一回合之内没法决定胜负则一定 $\text{once again!}$ 考虑如何判断一回合内能否决定胜负 首先如果最左边和最右的 $0$ 或 $1$ 距离 ...
- All shortest paths between a set of nodes
.big{font-size:larger} .small{font-size:smaller} .underline{text-decoration:underline} .overline{tex ...
- 大数据学习(1)-shell脚本注意事项
1.变量=值 (例如STR=abc) 不用加引号,但此时空格不再是空格字符,特殊字符可用于转义 2.等号两侧不能有空格 3.变量名称一般习惯为大写 4.双引号和单引号有区别,双引号仅将空格脱意,单引 ...
- C#中static修饰符的作用
static在C#中表示的是静态的,比如一个静态的字段是归类型所有,而非归对象所有,也就是说,在调用这个字段时,只能用类型去调,而不能用对象. 实例字段时随着对象创建而创建,对象销毁而销毁,而静态字段 ...
- [转载]布隆过滤器(Bloom Filter)
[转载]布隆过滤器(Bloom Filter) 这部分学习资料来源:https://www.youtube.com/watch?v=v7AzUcZ4XA4 Filter判断不在,那就是肯定不在:Fil ...
- java中的Enum在@RestController(@ResponseBody) 注解下返回的表现
参考文档 枚举 public enum CouponType { PLATFORM("平台优惠券"), NEWCOMER("新人专享优惠券"), INVITE( ...
- HTTPS中SSL/TLS握手时的私钥用途(RSA、ECDHE)
从上一篇HTTPS中CA证书的签发及使用过程中知道服务端在申请CA证书时只上交了密钥对中的公钥,那么只有服务端知道的私钥有什么作用呢? SSL/TLS层的位置 SSL/TLS层在网络模型的位置,它属于 ...