一些有用的php包与简单例子

{
    "require": {
        "monolog/monolog": "1.11.0", #处理日志
        "doctrine/orm": "2.3.6", #db orm
        "imagine/imagine": "0.6.2", #图片处理
        "chrisboulton/php-resque": "1.2", #队列
        "ezyang/htmlpurifier": "4.6.0", #html过滤
        "predis/predis": "1.0.0", #redis操作类
        "knplabs/knp-snappy": "0.3.1", #根据html或url生成pdf或image
        "phpoffice/phpexcel": "1.8.0", #生成和读取excel
        "mpdf/mpdf": "5.7.3", #生成pdf
        "tecnick.com/tcpdf": "6.0.099", #生成pdf
        "dompdf/dompdf": "0.6.1" #生成pdf
    }
}

<?php
 
namespace test;
 
error_reporting(E_ALL);
 
require __DIR__.'/../vendor/autoload.php';
 
//test log
use Monolog\Logger;
use Monolog\Handler\StreamHandler; #普通的文件日志
use Monolog\Handler\RotatingFileHandler; #一天写一个文件
use Knp\Snappy\Pdf;#生成pdf
use Knp\Snappy\Image;#生成pdf
 
use Imagine\Gd\Imagine;#用于图片处理
 
class test {
 
    private $snappyPdfPath = '/usr/local/wkhtmltopdf/bin/wkhtmltopdf.exe';
 
    private $snappyImgPath = '/usr/local/wkhtmltopdf/bin/wkhtmltoimage.exe';
 
    public function write_log() {
        // create a log channel
        $log = new Logger('test_log');
        //$log->pushHandler(new StreamHandler(__DIR__.'/log/app.log', Logger::DEBUG));
        $log->pushHandler(new RotatingFileHandler(__DIR__.'/log/app.log', 2, Logger::DEBUG));
 
        // add records to the log
        $log->addWarning('this is test log', array('txxxxxxxxxx'=>'bbbbbbbbbbb', 'ss' => '11'));
        $log->addError('this is test log2');
    }
 
    public function image() {
        $imageine = new Imagine();
        $size    = new \Imagine\Image\Box(5000, 1000); //大小
 
        $mode    = \Imagine\Image\ImageInterface::THUMBNAIL_INSET; //自适应
        //$mode    = \Imagine\Image\ImageInterface::THUMBNAIL_OUTBOUND; //会砍掉一部份
 
        //生成缩略图
        $imageine->open(__DIR__.'/image/test.png')->thumbnail($size, $mode)->save(__DIR__.'/image/thumb/test_thumb.png');
    }
 
    /**
     * disable_functions里的配置不能包括escapeshellarg,proc_open
     * 同时需要在http://wkhtmltopdf.org/downloads.html下载好对应的包安装好
     */
    public function html2pdf() {
        $snappy = new Pdf();
        $snappy->setBinary($this->snappyPdfPath);
        //根据thml生成
        //$snappy->generateFromHtml('<h1>Bill</h1><p>You owe me money, dude.</p>', '/tmp/bill-123.pdf');
         
        //直接输出下载
        /*header('Content-Type: application/pdf');
        header('Content-Disposition: attachment; filename="file.pdf"');
        echo $snappy->getOutput('http://www.xx.com/xx.html');*/
 
        //保存到服务器
        $snappy->generate('http://www.xx.com/xx.html', __DIR__.'/pdf/test.pdf');
    }
 
    /**
     * 同上面的pdf
     */
    public function html2images() {
        $snappy = new Image();
        $snappy->setBinary($this->snappyImgPath);
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="file.jpg"');
        echo $snappy->getOutput('http://www.xx.com/xx.html');
    }
 
    /**
     * 写excel,需要扩展xml、xmlwriter、zip、gd2
     * http://phpexcel.codeplex.com/
     * https://github.com/PHPOffice/PHPExcel/wiki/User%20Documentation
     * doc: http://www.cnblogs.com/freespider/p/3284828.html
     * http://blog.sina.com.cn/s/blog_44b3f96d0101cczo.html
     */
    public function writeExcel() {
        $objPHPExcel = new \PHPExcel();
 
        //单一处理
        /*$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', '这个是A1')
            ->setCellValue('B2', '这个是B2!')
            ->setCellValue('C1', '这个是C1')
            ->setCellValue('D2', '这个是D2');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save(__DIR__.'/excel/test.xlsx');*/
 
        //批量写入数据
        $arrData = array(
                array('测试数据1', '测试数据2'),
                array('测试数据1', '测试数据12'),
                array('测试数据11', '测试数据112'),
                array('测试数据1', '测试数据1112'),
                array('测试数据1', '测试数据1112'),
            );
        $objPHPExcel->setActiveSheetIndex(0);
        foreach ($arrData as $key => $value) {
            $objPHPExcel->getActiveSheet()->setCellValue('A' . ($key+1), $value[0]);
             $objPHPExcel->getActiveSheet()->setCellValue('B' . ($key+1), $value[1]);
        }
 
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save(__DIR__.'/excel/test1.xlsx');
    }
 
    /**
     *  读excel
     *
     *  result:
     *  A1 - 测试数据1
     *    B1 - 测试数据2
     *    A2 - 测试数据1
     *    B2 - 测试数据12
     *    A3 - 测试数据11
     *    B3 - 测试数据112
     *    A4 - 测试数据1
     *    B4 - 测试数据1112
     *    A5 - 测试数据1
     *    B5 - 测试数据1112
     */
    public function readExcel() {
        header("Content-type:text/html;charset=utf-8");
 
        $objReader = \PHPExcel_IOFactory:: createReader('Excel2007' );
        $objPHPExcel = $objReader->load( __DIR__.'/excel/test2.xlsx' );
 
        foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {     //遍历工作表
                echo 'Worksheet - ' , $worksheet->getTitle() , '<br>';
                foreach ($worksheet->getRowIterator() as $row) {       //遍历行
                    echo '    Row number - ' , $row->getRowIndex() , '<br/>';
                    $cellIterator = $row->getCellIterator();   //得到所有列
                    $cellIterator->setIterateOnlyExistingCells( false); // Loop all cells, even if it is not set
                     foreach ($cellIterator as $cell) {  //遍历列
                           if (!is_null($cell)) {  //如果列不给空就得到它的坐标和计算的值
                                 echo $cell->getCoordinate() , ' - ' , $cell->getCalculatedValue() , '<br>';
                          }
                    }
              }
        }
    }
 
    /**
     *  excel的内容写到pdf里
     *
     *  需要安装:
     *  Library     Version used for testing     Downloadable from     PHPExcel Internal Constant
     *    tcPDF     5.9     http://www.tcpdf.org/     PDF_RENDERER_TCPDF
     *    mPDF     5.4     http://www.mpdf1.com/mpdf/     PDF_RENDERER_MPDF
     *    domPDF     0.6.0 beta 3     http://code.google.com/p/dompdf/     PDF_RENDERER_DOMPDF
     */
    public function excelToPdf() {
        $objPHPExcel = new \PHPExcel();
        //批量写入数据
        $arrData = array(
                array('Downloadable', 'Downloadable'),
                array('Downloadable', 'Downloadable2'),
                array('Downloadable1', 'Downloadable12'),
                array('Downloadable', 'Downloadable112'),
                array('Downloadable', 'Downloadable就'),
            );
        $objPHPExcel->setActiveSheetIndex(0);
        foreach ($arrData as $key => $value) {
            $objPHPExcel->getActiveSheet()->setCellValue('A' . ($key+1), $value[0]);
             $objPHPExcel->getActiveSheet()->setCellValue('B' . ($key+1), $value[1]);
        }
        $rendererName = \PHPExcel_Settings::PDF_RENDERER_DOMPDF;
        $rendererLibraryPath = __DIR__.'/../vendor/dompdf/dompdf';
        \PHPExcel_Settings::setPdfRenderer(
            $rendererName,
            $rendererLibraryPath
        );
 
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
        $objWriter->setIncludeCharts(TRUE);
        $objWriter->save(__DIR__.'/pdf/excel.pdf');
    }
 
}
 
$testObj = new test();
 
//phpinfo();
 
//写日志
//$testObj->write_log();
 
//图片处理
//$testObj->image();
 
//生成pdf
//$testObj->html2pdf();
 
//生成图
//$testObj->html2images();
 
//写excel
//$testObj->writeExcel();
 
//读excel
//$testObj->readExcel();
 
//excel生成pdf文件
$testObj->excelToPdf();
 
echo 'done';


你可能感兴趣的:(一些有用的php包与简单例子)