首先,安装(linux安装为例)

1、下载wkhtmltopdf

wget http://download.gna.org/wkhtmltopdf/obsolete/linux/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2
2、解压压缩包
tar jxvf wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2 -C /opt
3、重命名文件夹,移动文件夹
## For RHEL/CentOS/Fedora 64-Bit OS ##
# cd /opt
# mv wkhtmltopdf-amd64 wkhtmltopdf
# mv wkhtmltopdf /usr/local/bin
4、测试是否安装成功
wkhtmltopdf http://www.baidu.com /home/wwwroot/baidu.pdf

程序代码调用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字体设置是楷体)

  1. yum -y install fontconfig //我的机器已经安装过
  2. 查看 /usr/shared/ 下有 fonts、fontconfig两个目录
  3. 将window下的字体复制出来,在C:\Windows\Fonts目录下。
    我复制了两个字体,“楷体 常规”,“宋体 常规”,复制到桌面后,文件名分别为“simkai.ttf”、“simsun.ttf”
  4. 在 /usr/shared/fonts 下新建目录chinese,将两个字体文件导入
  5. yum -y install ttmkfdir //这个也是已经安装过了
  6. 执行命令 ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
  7. 配置文件
3.由于页面默认是正A4大小,有的表格过长,生成不完整
   上面代码写了,加参数配置让生成pdf纸张横向 wkhtmltopdf -O landscape www.baodu.com bd.pdf

wkhtmltopdfhtml php生成pdf快照,网页截图,网页快照完整版 (原)的更多相关文章

  1. VC2008如何生成及使用DLL(图文并茂,完整版)

    博客分类: Dot net VC2008 DLL Dot net   生成.使用DLL看起来简单,但做起来才发现还是有一些地方需要注意的. 1. 打开VS2008,新建一个VC工程,选择Win32类型 ...

  2. 使用html2canvas实现网页截图,并嵌入到PDF

    使用html2canvas实现网页截图并嵌入到PDF 以前我们只能通过截图工具进行截取图像.这使得在业务生产中,变得越来越不方便.目前的浏览器功能越来越强大,H5也逐渐普及,浏览器也可以实现截图了.这 ...

  3. Django生成PDF显示在网页上以及解决中文显示乱码的问题

    项目地址:https://github.com/PythonerKK/django-generate-pdf/tree/master 这个demo实现了通过用户输入自己的个人信息生成一份简历pdf,来 ...

  4. pypdf2:下载Americanlife网页生成pdf合并pdf并添加书签

    初步熟悉 安装 pip install pypdf2 合并并添加书签 #!/usr/bin/env python3.5 # -*- coding: utf-8 -*- # @Time : 2019/1 ...

  5. 实践指南-网页生成PDF

    一.背景 开发工作中,需要实现网页生成 PDF 的功能,生成的 PDF 需上传至服务端,将 PDF 地址作为参数请求外部接口,这个转换过程及转换后的 PDF 不需要在前端展示给用户. 二.技术选型 该 ...

  6. 使用puppeteer生成pdf与截图

    之前写过一篇 vue cli2 使用 wkhtmltopdf 踩坑指南,由于wkhtmltopdf对vue的支持并不友好,而且不支持css3,经过调研最终选择puppeteer,坑少,比较靠谱. 一. ...

  7. tcpdf 将网页生成pdf

    需求:需要将HTML页面生成PDF文档 开发语言:PHP 使用TCPDF第三方类库进行生成,下载地址:http://sourceforge.net/projects/tcpdf/ 核心代码: publ ...

  8. 有了 serverless,前端也可以快速开发一个 Puppeteer 网页截图服务

    更多云原生技术资讯可关注阿里巴巴云原生技术圈. Puppeteer 是什么? puppeteer 官网的介绍如下: Puppeteer is a Node library which provides ...

  9. 使用PhantomJS实现网页截图服务

    这是上半年遇到的一个小需求,想实现网页的抓取,并保存为图片.研究了不少工具,效果都不理想,不是显示太差了(Canvas.Html2Image.Cobra),就是性能不怎么样(如SWT的Brower). ...

随机推荐

  1. 爬取糗事百科热门段子的数据并保存到本地,xpath的使用

    和之前的爬虫类博客的爬取思路基本一致: 构造url_list,因为糗事百科的热门栏目默认是13页,所以这个就简单了 遍历发送请求获取响应 提取数据,这里用的是xpath提取,用的是Python的第三方 ...

  2. Python_4day

    函数 函数可以用来定义可重复代码,组织和简化 一般来说一个函数在实际开发中为一个小功能 一个类为一个大功能 同样函数的长度不要超过一屏   Python中的所有函数实际上都是有返回值(return N ...

  3. Django进阶(一)

    目录 choice参数 MTV与MVC模型 Ajax Ajax传json数据 Ajax传file数据 contentType前后端传输数据编码 ajax + sweetalert 序列化组件 补充 c ...

  4. CSS(下)

    目录 CSS(下) CSS属性相关 宽和高 字体属性 背景属性 边框 border-radius display属性 CSS盒子模型 margin外边距 padding内填充 浮动(float) 限制 ...

  5. Keras模型训练的断点续训、早停、效果可视化

    训练:model.fit()函数 fit(x=None, y=None, batch_size=None, epochs=, verbose=, callbacks=None, validation_ ...

  6. jQuery俄罗斯方块游戏动画

    在线演示       本地下载

  7. rabbitmq中关于exchange模式type报错

    channel.exchange_declare(exchange='logs', type='fanout') 报错: Traceback (most recent call last):  Fil ...

  8. spring boot @Value源码解析

    Spring boot 的@Value只能用于bean中,在bean的实例化时,会给@Value的属性赋值:如下面的例子: @SpringBootApplication @Slf4j public c ...

  9. php 技术点积累

    PHP 反射之动态代理 php跨域的几种方式 给 PHP 开启 shmop 扩展实现共享内存 php十进制转二进制不用函数 php+nodeJs+thrift协议,实现zookeeper节点数据自动发 ...

  10. qt webengineview 加载本地资源方式

    一.如果把资源添加到本地资源qrc库里了,请使用 ui->preview->setUrl(QUrl("qrc:/HelloWorld2.html")): 二.如果没有现 ...