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;
        }
    }
}
posted @ 2020-11-20 13:47  杰克-李  阅读(427)  评论(0编辑  收藏  举报