php 查询mysql数据批量转为PDF文件二(批量使用wkhtmltopdf html导出PDF)
上节讲到配置wkhtmltopdf,这节讲下如何批量操作
首先讲下wkhtmltopdf如何使用
直接命令行输入:
wkhtmltopdf http://www.baidu.com/ baidu.pdf
php使用
<?php
shell_exec('wkhtmltopdf http://www.baidu.com/ baidu.pdf') //注:中间两个空格隔开
?>
当前路径下会生成一个PDF文件:
批量操作:
<?php
header("Content-type:text/html;charset=utf-8");
$host='127.0.0.1';
$user='root';
$password='***';
$dbName= "***"; $db=new MySQLi($host,$user,$password,$dbName);
mysqli_set_charset($db,'utf8');
if ($db->connect_error){ die("连接失败:".$db->connect_error); } $sql = '***';
$result = $db->query($sql);//返回结果集对象
$n = $result->fetch_all();
echo '<pre>';
$s = 0;
foreach ($n as $v){
$s ++;
//判断是否生成
$file = "test_pdf/".$v[0].".pdf";
if(file_exists($file)){
continue;
}
$path="test_html/".$v[0].".html"; //命名方式可以id命名,唯一即可
$tem = 'cq/template.html'; //模板HTML文件
$fp=fopen($tem,"r");
//读取模板中内容
$str=fread($fp,filesize($tem));
//替换内容
$str=str_replace("{indentity_code}",$v[0],$str);
$str=str_replace("{name}",$v[1],$str);
***
fclose($fp);
//写入方式打开路径 $handle=fopen($path,"w");
//把刚才替换的内容写进生成的HTML文件
fwrite($handle,$str);
fclose($handle);
//存PDF
shell_exec("wkhtmltopdf localhost/test_html/".$v[0].".html "."test_pdf/".$v[0].".pdf");
echo $v[0].'<br/>';
//检测生成PDF
// if($s == 2 ){
// break;
// }
}
通过循环方式执行:
<!DOCTYPE HTML>
<meta http-equiv="content-type" content="text/html;charset=utf-8"> <!-- 注:这句加上防止HTML乱码,导致导出PDF乱码 -->
<html>
<body>
<link rel="stylesheet" type="text/css" href="../ks.css">
<div class="box">
<span style="width: 30%">姓名:{name}</span>
</div>
</body>
</html>
注: css文件要和生成html文件引入方式一样,这样确保生成后的html文件能在本地访问
以上方式基本上能实现批量数据导出PDF,如有不懂,或者过程中遇到别的问题,乱码等问题加群讨论
php 查询mysql数据批量转为PDF文件二(批量使用wkhtmltopdf html导出PDF)的更多相关文章
- python查询mysql数据(3)
python查询mysql数据(3) """数据查询""" import pymysql import datetime from pymy ...
- 【转】Python编程: 多个PDF文件合并以及网页上自动下载PDF文件
1. 多个PDF文件合并1.1 需求描述有时候,我们下载了多个PDF文件, 但希望能把它们合并成一个PDF文件.例如:你下载的数个PDF文件资料或者电子发票,你可以使用python程序合并成一个PDF ...
- java操作office和pdf文件java读取word,excel和pdf文档内容
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- Salesforce随笔: 将Visualforce Page渲染为PDF文件(Render a Visualforce Page as a PDF File)
参照 : Visualforce Developer Guide 第60页 <Render a Visualforce Page as a PDF File> 你可以用PDF渲染服务生成一 ...
- php 查询mysql数据批量转为PDF文件一(mac使用配置wkhtmltopdf html导出PDF)
数据转标准PDF查文档,查资料先转HTML标准格式再html转PDF 转PDF wkhtmltopdf工具是最佳选择 首先下载wkhtmltopdf https://wkhtmltopdf.org/d ...
- 笔记:PHP查询mysql数据后中文字符乱码
新建表Clubs CREATE TABLE `Clubs` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) CHARACTER SET utf8 NOT NULL ...
- 【Java】数据库查询的数据直接以指定文件类型下载到本地(弹出下载框)
欲实现的功能目标:当点击下图的导出数据文件时弹出文件下载框,默认csv格式,用户自定义下载的本地路径 遇到的问题: 1.项目之前做过一次下载,但是是使用了本地文件模板.用输入流读取文件模板,插入数据, ...
- Spring-Batch处理MySQL数据后存到CSV文件
1 介绍 用Spring Batch实现了个简单的需求,从MySQL中读取用户表数据,根据生日计算年龄,将结果输出到csv文件. 1.1 准备表及数据 user test; DROP TABLE IF ...
- 查询MYSQl数据表中的最后一条记录
mysql: select * from table order by id DESC limit 1 oracle: select * from emp where id in (select ma ...
随机推荐
- JS 全选、全不选、反选
function checkReturn(obj) { var objIds = obj.value; //当没有选中某个子复选框时,checkboxall取消选中 if (!$("#sub ...
- 在自定义目录下,按日期创建excel文件
在指定文件目录下,新建以当前日期命名的excel 文件,如果文件已经存在,在文件中新建一个sheet页来存放数据 import datetime import xlrd, xlwt import re ...
- react初始
一.一些基础概念 1.框架:基于整个项目的 2.库:在某个模块中单独使用,轻量级的 在vue中,DOM的操作时DOM指令调用js 在react中,所有的DOM 渲染都是由JS完成的 组件基于视图 模块 ...
- Serializable中的serialVersionUID
有序列化,就必然有反序列化!比如在A端为UserLogin(见上一篇对象序列化)做了序列化,然后在B端进行反序列化. 首先需要,A端和B端都定义有相同的UserLogin类.可是,万一两端的UserL ...
- ELK学习笔记之ELK搜集OpenStack节点日志
模板来自网络,模板请不要直接复制,先放到notepad++内调整好格式,注意缩进 部署架构 控制节点作为日志服务器,存储所有 OpenStack 及其相关日志.Logstash 部署于所有节点,收集本 ...
- 打印word文档时遇到标记区如何取消
故障描述:word页面显示正常,打印以及打印预览的时候,页面上会出现部分暗色区域(标记区) 故障原因:简单标记惹的祸 解决办法:word菜单栏-审阅-简单标记 ...
- Vue 组件&组件之间的通信 之 子组件向父组件传值
子组件向父组件传值:子组件通过$.emit()方法以事件形式向父组件发送消息传值: 使用步骤: 定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: 准备获取数据:父组件c ...
- 王之泰201771010131《面向对象程序设计(java)》第十三周学习总结
第一部分:理论知识学习部分 第11章 事件处理 11.1 事件处理基础 a)事件源(event source):能够产生事件的对象都可 以成为事件源,如文本框.按钮等.一个事件源是一个 能够注册监听 ...
- PageRank算法实现
基本原理 在互联网上,如果一个网页被很多其他网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高.这就是PageRank的核心思想. 引用来自<数学之美>的简单例子: 网页Y的排名应该 ...
- python中模块的__all__详细使用
python模块中的__all__,用于模块导入时限制,如:from module import * 此时被导入模块若定义了__all__属性,则只有__all__内指定的属性.方法.类可被导入:若没 ...