• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php批量导出pdf文件的脚本(html-PDf)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

背景:突然有大量的文件需要导出成PDF文件,写一个批量导出pdf的脚本,同时文件的命名也需要有一定的规则

导出方式:向服务器中上传csv文件,csv文件中包含文件的地址和相对应的文件命名。

如下格式:(地址是已经加密的)

758cm1q8t3NMzbEcGhXLm03oiEelzomItxYT4PuGD3xoJkcRnZ5VrFmeOt_Kucw5vyPUJDiOv0ipLxY1jL_RUjAraovb-jYVMObT1fru0DViCy0ZDmXzTLcEoQFVSdD336MjtNHFHmU8mHf0GwendD4rMmMl5A6S1VM5N88,王越
758cm1q8t3NMzbEcGhXLm03oiEelzomItxYT4PuGD3xoJkcRnZ5VrFmeOt_Kucw5vyPUJDiOv0ipLxY1jL_RUjAraovb-jYVMObT1fru0DViCy0ZDmXzTLcEoQFVSdD336MjtNHFHmU8mHf0GwendD4rMmMl5A6S1VM5N88,王越

导出的文件 index.php

 1 <?php
 2 require \'class/csv.php\';
 3 require \'class/Encrypt.php\';
 4 $args = getopt(\'f:\');
 5 $file = isset($args[\'f\']) ? trim($args[\'f\']) : \'\' ;
 6 if(empty($file)){
 7     exit("please input file " );
 8 }
 9 if(!file_exists(dirname(__FILE__) . "/csv/$file"  ) ){
10     exit($file . "---is not exists " );
11 }
12 
13 $csvreader = new CsvReader(dirname(__FILE__) . "/csv/" . $file);
14 
15 $data = $csvreader->get_data(1000 , 0 );
16 
17 if(empty($data) ){
18     exit("file content is empty ");
19 }
20 $folder = "/opt/data/site/export/file/" ;//创建文件的地址
21 $date = date("YmdHis" , time() );
22 $f = $folder . "/" . $date ;
23 mkdir( $f );
24 foreach($data as $key => $value ){
25     $url = isset($value[0]) ? trim($value[0]) : \'\' ;
26     $name = isset($value[1]) ? trim($value[1]) : \'\' ;
27     $url = Encrypt::AuthCode($url , "DECODE" , "*******@123reu!@^%" );//解密方式
28     if(empty($name) OR empty($url ) ){
29         continue ;
30     }
31 //    echo $url ;
32 //    echo "\n";
33     $commend = "/usr/local/wkhtmltox/bin/wkhtmltopdf \'{{$url}}\' {$f}/{$name}.pdf &";
34     system($commend );//调用系统命令
35     echo "export url is {$url} \n";
36 }
37 echo "OK-----success";
$args = getopt(\'f:\');函数是读取shell脚本的 参数
例如: index.php -f 11.csv 直接读取csv文件夹中的11.csv文件,进行数据导出
csv类如下:
 1 <?php
 2 /** 7  */
 8 class CsvReader {
 9     private $csv_file;
10     private $spl_object = null;
11     private $error;
12     
13     public function __construct($csv_file = \'\') {
14         if($csv_file && file_exists($csv_file)) {
15             $this->csv_file = $csv_file;
16         }
17     }
18     
19     public function set_csv_file($csv_file) {
20         if(!$csv_file || !file_exists($csv_file)) {
21             $this->error = \'File invalid\';
22             return false;
23         }
24         $this->csv_file = $csv_file;
25         $this->spl_object = null;
26     }
27     
28     public function get_csv_file() {
29         return $this->csv_file;
30     }
31     
32     private function _file_valid($file = \'\') {
33         $file = $file ? $file : $this->csv_file;
34         if(!$file || !file_exists($file)) {
35             return false;
36         }
37         if(!is_readable($file)) {
38             return false;
39         }
40         return true;
41     }
42     
43     private function _open_file() {
44         if(!$this->_file_valid()) {
45             $this->error = \'File invalid\';
46             return false;
47         }
48         if($this->spl_object == null) {
49             $this->spl_object = new SplFileObject($this->csv_file, \'rb\');
50         }
51         return true;
52     }
53 
54     public function get_data($length = 0, $start = 0) {
55         if(!$this->_open_file()) {
56             return false;
57         }
58         $length = $length ? $length : $this->get_lines();
59         $start = $start - 1;
60         $start = ($start < 0) ? 0 : $start;
61         $data = array();
62         $this->spl_object->seek($start);
63         while ($length-- && !$this->spl_object->eof()) {
64             $data[] = $this->spl_object->fgetcsv();
65             $this->spl_object->next();
66         }
67         return $data;
68     }
69     
70     public function get_lines() {
71         if(!$this->_open_file()) {
72             return false;
73         }
74         $this->spl_object->seek(filesize($this->csv_file));
75         return $this->spl_object->key();
76     }
77     
78     public function get_error() {
79         return $this->error;
80     }
81 }

原理:获取csv文件中的内容,创建保存数据的文件夹,通过导出类来导出文件。

wkhtmltopdf  的介绍:http://blog.csdn.net/qq_14873105/article/details/51394026

 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess ...发布时间:2022-07-10
下一篇:
php合并2个有序链表发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap