php批量导出pdf文件的脚本(html-PDf)
背景:突然有大量的文件需要导出成PDF文件,写一个批量导出pdf的脚本,同时文件的命名也需要有一定的规则
导出方式:向服务器中上传csv文件,csv文件中包含文件的地址和相对应的文件命名。
如下格式:(地址是已经加密的)
758cm1q8t3NMzbEcGhXLm03oiEelzomItxYT4PuGD3xoJkcRnZ5VrFmeOt_Kucw5vyPUJDiOv0ipLxY1jL_RUjAraovb-jYVMObT1fru0DViCy0ZDmXzTLcEoQFVSdD336MjtNHFHmU8mHf0GwendD4rMmMl5A6S1VM5N88,王越
758cm1q8t3NMzbEcGhXLm03oiEelzomItxYT4PuGD3xoJkcRnZ5VrFmeOt_Kucw5vyPUJDiOv0ipLxY1jL_RUjAraovb-jYVMObT1fru0DViCy0ZDmXzTLcEoQFVSdD336MjtNHFHmU8mHf0GwendD4rMmMl5A6S1VM5N88,王越
导出的文件 index.php
<?php
require 'class/csv.php';
require 'class/Encrypt.php';
$args = getopt('f:');
$file = isset($args['f']) ? trim($args['f']) : '' ;
if(empty($file)){
exit("please input file " );
}
if(!file_exists(dirname(__FILE__) . "/csv/$file" ) ){
exit($file . "---is not exists " );
} $csvreader = new CsvReader(dirname(__FILE__) . "/csv/" . $file); $data = $csvreader->get_data( , ); if(empty($data) ){
exit("file content is empty ");
}
$folder = "/opt/data/site/export/file/" ;//创建文件的地址
$date = date("YmdHis" , time() );
$f = $folder . "/" . $date ;
mkdir( $f );
foreach($data as $key => $value ){
$url = isset($value[]) ? trim($value[]) : '' ;
$name = isset($value[]) ? trim($value[]) : '' ;
$url = Encrypt::AuthCode($url , "DECODE" , "*******@123reu!@^%" );//解密方式
if(empty($name) OR empty($url ) ){
continue ;
}
// echo $url ;
// echo "\n";
$commend = "/usr/local/wkhtmltox/bin/wkhtmltopdf '{{$url}}' {$f}/{$name}.pdf &";
system($commend );//调用系统命令
echo "export url is {$url} \n";
}
echo "OK-----success";
$args = getopt('f:');函数是读取shell脚本的 参数
例如: index.php -f 11.csv 直接读取csv文件夹中的11.csv文件,进行数据导出
csv类如下:
<?php
/**
* @Author: Awe
* @Date: 2017-02-06 10:49:26
* @Last Modified by: Awe
* @Last Modified time: 2017-02-06 10:49:34
*/
class CsvReader {
private $csv_file;
private $spl_object = null;
private $error; public function __construct($csv_file = '') {
if($csv_file && file_exists($csv_file)) {
$this->csv_file = $csv_file;
}
} public function set_csv_file($csv_file) {
if(!$csv_file || !file_exists($csv_file)) {
$this->error = 'File invalid';
return false;
}
$this->csv_file = $csv_file;
$this->spl_object = null;
} public function get_csv_file() {
return $this->csv_file;
} private function _file_valid($file = '') {
$file = $file ? $file : $this->csv_file;
if(!$file || !file_exists($file)) {
return false;
}
if(!is_readable($file)) {
return false;
}
return true;
} private function _open_file() {
if(!$this->_file_valid()) {
$this->error = 'File invalid';
return false;
}
if($this->spl_object == null) {
$this->spl_object = new SplFileObject($this->csv_file, 'rb');
}
return true;
} public function get_data($length = , $start = ) {
if(!$this->_open_file()) {
return false;
}
$length = $length ? $length : $this->get_lines();
$start = $start - ;
$start = ($start < ) ? : $start;
$data = array();
$this->spl_object->seek($start);
while ($length-- && !$this->spl_object->eof()) {
$data[] = $this->spl_object->fgetcsv();
$this->spl_object->next();
}
return $data;
} public function get_lines() {
if(!$this->_open_file()) {
return false;
}
$this->spl_object->seek(filesize($this->csv_file));
return $this->spl_object->key();
} public function get_error() {
return $this->error;
}
}
原理:获取csv文件中的内容,创建保存数据的文件夹,通过导出类来导出文件。
wkhtmltopdf 的介绍:http://blog.csdn.net/qq_14873105/article/details/51394026
php批量导出pdf文件的脚本(html-PDf)的更多相关文章
- 网页中动态嵌入PDF文件/在线预览PDF内容https://www.cnblogs.com/xgyy/p/6119459.html
#网页中动态嵌入PDF文件/在线预览PDF内容# 摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如 ...
- PDF文件怎么修改,PDF文件编辑方法
PDF文件是一种独特的文件,在日常办公中已经成为我们使用最广泛的电子文档格式.在使用PDF文件中会遇到PDF文件有错区的时候,再从新制作一个PDF文件会比较麻烦,只能通过工具来对PDF文件进行修改,这 ...
- PDF文件编辑技巧之PDF书签怎么设置
纸质的文件想要添加书签就直接拿笔书写就可以,Word文件怎么添加书签相信大家也都知道,那么PDF文件的书签要怎么设置的呢,是不是有很多小伙伴不知道该怎么做呢,不要担心,今天小编就来跟大家分享一下在PD ...
- 如何编辑PDF文件,怎么使用PDF裁剪页面工具
在编辑PDF文件的时候,往往会有很多的小技巧可以使用,在编辑PDF文件的时候,怎么对文件的页面进行裁剪呢,不会的话,看看下面的文章吧,小编已经为大家整理好了哦. 1.打开运行PDF编辑器,在编辑器中打 ...
- #网页中动态嵌入PDF文件/在线预览PDF内容#
摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如下: 代码片段1: 1 <object ty ...
- photoshop 修改pdf文件并保存为pdf
1.CTRL + O 打开要编辑的pdf文件 按住shift 选中每一页,点击确定. pdf文档每一页以一个psd文件显示在工作区, 分别进行修改, 2.批量修改同一个元素(比如加个图标) 在一页 ...
- base64编码后的pdf文件前端页面展示--pdf.js的应用
最近在整理项目中用到的插件或者使用心得,感觉还是写成博客,能加深新一层的理解. 我先说一下我的需求:由于java后台编译的文件流在手机端加载速度太慢,所以想着可以在前端解析,放在页面展示给用户. 所以 ...
- NPOI操作EXCEL(四)——反射机制批量导出excel文件
前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...
- 个人永久性免费-Excel催化剂功能第88波-批量提取pdf文件信息(图片、表格、文本等)
日常办公场合中,除了常规的Excel.Word.PPT等文档外,还有一个不可忽略的文件格式是pdf格式,而对于想从pdf文件中获取信息时,常规方法将变得非常痛苦和麻烦.此篇给大家送一pdf文件提取信息 ...
随机推荐
- UI交互设计教程分享:提高界面交互体验的“葵花宝典”
本次分享的是在界面设计中最长实用也最容易被忽略的十个原则,就是尼尔森十大可用性设计原则,这是十分基础且重要的原则.原则是死的,如何正确的结合到实际运用中才是关键.接下来我会通过对每一个原则的理解和现 ...
- lib文件反汇编
运行vc命令行,输入:dumpbin /disasm xxx.lib > test.txt lib就是obj文件打包起来的,可以用lib.exe解出来,下面是vc环境下的操作,其他环境,看命令行 ...
- ubuntu关闭防火墙
https://jingyan.baidu.com/article/73c3ce283ee2c1e50343d9f6.html
- struts2 的 ServletActionContext 和 actionContext,服务器代码测试, redirect 、dispatcher、chain、redirectAction
一.ServletActionContext 和 actionContext HttpServletRequest request=ServletActionContext.getRequest() ...
- 启动 nexus, major.minor 51.0 版本不支持
a).Nexus的2.6版本及其以后版本 使用的Java的jdk7. b).Nexus的2.0-2.5版本 使用Java的jdk6的update30版本及其以后的jdk6版本 使用Java的jdk7的 ...
- eclipse代码自动提示,eclipse设置代码自动提示
eclipse代码自动提示,eclipse设置代码自动提示 eclipse是很多JAVA开发者基本上都用的工具,用它可以很方便的开发JAVA代码,当编写JAVA代码时,大部分人都是按组合键[Alt+/ ...
- 2018.08.20 loj#115. 无源汇有上下界可行流(模板)
传送门 又get到一个新技能,好兴奋的说啊. 一道无源汇有上下界可行流的模板题. 其实这东西也不难,就是将下界变形而已. 准确来说,就是对于每个点,我们算出会从它那里强制流入与流出的流量,然后与超级源 ...
- 【转】MapReduce:详解Shuffle过程
——转自:{http://langyu.iteye.com/blog/992916} Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce, Shuffle ...
- Map的常用操作
public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map. ...
- win7-64bit下安装Scipy
一直用MAC写python,但京东给的本装的是win7系统,在安装scipy时各种报错,最后错误提示为: no lapack/blas resources found 开始一顿搜,爆栈给出的解决方案是 ...