zoukankan      html  css  js  c++  java
  • php批量打印发票一(php下载远程文件)

    需求背景介绍:

    在一个报销系统中, 员工上传电子PDF发票, 在终审时, 出纳要打印出PDF发票做凭证. 在一张报销单中, 线常有数十张发票. 导致出纳员工作量很大.

    解决方法:

    1. 把附件发票下载到本地

    2. 下载到本地后,转成图片

    3. 把图片合并到一张PDF中

    一. 下载远程附件

    /**
     * 下载发票
     * @param array $PathArr 远程附件的保存目录和文件名
     */
    function DownPDF($PathArr)
    {
        $savePath = $_SERVER['DOCUMENT_ROOT']; //要保存在本地的目录
        foreach ($PathArr as $item)
        {
            $pdfPath = "/BPM_Att/".$item['StoragePath']."/"; //远程文件目录
            $fileName = $item['StorageFileName'];            //文件名称
            FtpDownFile($pdfPath, $fileName,$savePath);
        }  
    } 
    /**
     * 以FTP方式下载文件到服务器目录 
     * @param unknown $filePath FTP文件目录
     * @param unknown $fileName FTP文件名
     * @param unknown $savePath 下载保存目录
     * @return boolean
     */
    function FtpDownFile($filePath,$fileName,$savePath){
        $phpftp_host = "192.168.0.6"; //服务器地址
        $phpftp_port = 21; //服务器的端口号
        $phpftp_user = "009";       // 用户名
        $phpftp_passwd = "AA"; //口令
        $ftp_path = $filePath; //路经
        $select_file = $fileName; //文件名
        $ftp = ftp_connect($phpftp_host,$phpftp_port); //连接FTP服务器
        if($ftp){
            if(ftp_login($ftp, $phpftp_user, $phpftp_passwd)){ //登陆
                if(ftp_chdir($ftp,$ftp_path)){  //进入指定路径
                    //这里建目录时,建在程序根目录下,目录前带斜杠则建在当前文件根目录,就是D盘,如果不加斜杠则建在当前文件目录下
                    //构造目录
                    $savePath = $savePath.$ftp_path;
                    //判断目录是否存在
                    if(!is_dir($savePath))
                    {
                        mkdir($savePath,0777,true); //创建目录
                    }
                    //下载指定文件
                    ftp_pasv($ftp, true); 
                    if(ftp_get($ftp, $savePath.str_replace(strrchr($select_file, "."), "", $select_file).".pdf", $select_file, FTP_BINARY,0)) //由于远程文件名是.HFD,这里保存里更名为.pdf, 这里FTP采用被动模式
                    {
                        ftp_quit( $ftp );  // 关闭连接
                        return true;
                    }else{
                        return false;
                    }
                }else{
                    return false;
                }
            }else{
                return false;
            }
        }
    }
  • 相关阅读:
    053(二十七)
    【leetcode❤python】141. Linked List Cycle
    【leetcode❤python】13. Roman to Integer
    【leetcode❤python】121. Best Time to Buy and Sell Stock
    【leetcode❤python】119. Pascal's Triangle II
    【leetcode❤python】118. Pascal's Triangle
    【leetcode❤python】110. Balanced Binary Tree
    【leetcode❤python】107. Binary Tree Level Order Traversal II
    【leetcode❤python】102. Binary Tree Level Order Traversal
    【leetcode❤python】101. Symmetric Tree
  • 原文地址:https://www.cnblogs.com/snowguest/p/14010466.html
Copyright © 2011-2022 走看看