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). ...
随机推荐
- # pycharm新建项目后运行按钮为灰色
pycharm新建项目后运行按钮为灰色 第一次运行需要先为项目创建解释器,第一次可以对项目右键选中Run或者Ctrl+Shift+F10自动为项目创建解释器.或者手动Run->Edit Conf ...
- 基于Keras的OpenAI-gym强化学习的车杆/FlappyBird游戏
强化学习 课程:Q-Learning强化学习(李宏毅).深度强化学习 强化学习是一种允许你创造能从环境中交互学习的AI Agent的机器学习算法,其通过试错来学习.如上图所示,大脑代表AI Agent ...
- vue-router和webpack懒加载,页面性能优化篇
在vue单页应用中,当项目不断完善丰富时,即使使用webpack打包,文件依然是非常大的,影响页面的加载.如果我们能把不同路由对应的组件分割成不同的代码块,当路由被访问时才加载对应的组件(也就是按需加 ...
- (转)Dubbo服务暴露过程源码分析
参考
- MapReduce框架中的Shuffle机制
Shuffle是map和reduce中间的数据调度过程,包括:缓存.分区.排序等. Shuffle数据调度过程: map task处理hdfs文件,调用map()方法,map task的collect ...
- SQL 优化SQL查询
摘至于:http://www.cnblogs.com/ATree/archive/2011/02/13/sql_optimize_1.html 1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据 ...
- python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
基于示例infer_simple.py 修改165行vis_utils.vis_one_image为vis_utils.vis_one_image_opencv 在detectron.utils.vi ...
- SpringMVC @Valid,@RequestBody,@RequestParam标注参数时,进行Postman测试
@Valid(post请求) 可与@RequestBody一起使用 > (@RequestBody @Valid User user) @RequestBody(post请求) 这里的requi ...
- idea安装完成后要做的几件事(设置字体、编码、行号)
1.设置字体大小和样式 打开设置:File-->Settings 看到如下界面,输入font,点击Editor目录下的Font设置字体大小和样式: Font:字体样式 size:字体大小 Fal ...
- 前端开发 | 尝试用Markdown写一下近几个月的总结
近期总结 回顾 半年前 半年前,接触了前端一年多(工作半年)的我了解的东西只有下面这些.因为在公司里的工作就是切静态页,捣鼓CMS. HTML (比较简洁的编写HTML) CSS/CSS3 (PC兼容 ...