首页 > 编程语言 >PHP 提取PDF文件内容

PHP 提取PDF文件内容

时间:2023-05-29 16:22:51浏览次数:54  
标签:save 提取 url filename content txt PDF PHP dir

这里以提取 亚马逊日期范围报告PDF汇总 的数据

根据路径下载PDF

 /**
     * description: 文件下载
     * @throws CException
     */
    public function getFile($url, $save_dir = '', $filename = '', $type = 0)
    {
        if (trim($url) == '') {
            return false;
        }
        if (trim($save_dir) == '') {
            $save_dir = './';
        }
        if (0 !== strrpos($save_dir, '/')) {
            $save_dir .= '/';
        }
        //创建保存目录
        if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
            return false;
        }
        //获取远程文件所采用的方法
        if ($type) {
            $ch = curl_init();
            $timeout = 5;
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            $content = curl_exec($ch);
            curl_close($ch);
        } else {
            ob_start();
            readfile($url);
            $content = ob_get_contents();
            ob_end_clean();
        }
        //echo $content;
        $size = strlen($content);
        //文件大小
        $fp2 = @fopen($save_dir . $filename, 'a');
        @fwrite($fp2, $content);
        @fclose($fp2);
        unset($content, $url);
        return array(
            'status' => 1,
            'file_name' => $filename,
            'save_path' => $save_dir . $filename,
            'file_size' => $size
        );
    }

服务器需要开启 shell_exec

shell_exec("pdftotext -layout GAN-IT_242_510181.pdf  GAN-IT_242_510181.txt");

得到按行解析的txt

 在就提取txt文件的 11行到16行数据

$filename = $accountnamelist[$val['accountid']].'_'.$val['accountid'].'_'.$val['planid'];
        if (file_exists($url .$filename. '.pdf')) {
            @unlink($url . $filename . '.pdf');
        }
        $res = $modelre->getFile($val['url'], $url, $filename.'.pdf');//下载pdf
        $modelpdf->deleteAll('account_id=:account_id and batchnumber=:bn', [':account_id' => $val['accountid'], ':bn' => $val['batchnumber']]);
        shell_exec("pdftotext -layout ".$url.$filename.".pdf  ".$url.$filename.".txt");
        if(!file_exists($url.$filename.".txt")){return false;}
        $sum = 0;
        $content = $modelre->readTXT($url.$filename.".txt");
        $dlist = $list = $data =[];
        foreach ($content as $keyp=>$valp){
            if($keyp>=10 && $keyp<=15 && trim($valp)){
                $res = preg_replace("/\s{2,}/u","_",trim($valp));//吧两个以上的空格转换为_
                $reslist = explode('_',$res);
                $sub = str_replace(',', '', $reslist[2]);
                $sum += (double)$sub;//得到数字相加的结果
                $dlist[] = $reslist;
            }
        }
        $data['account_id'] = $val['accountid'];
        $data['account_name'] = $accountnamelist[$val['accountid']];
        $data['description'] = json_encode($dlist);
        $data['total_price'] = $sum;
        $data['url'] = '/upload/pdflabel/'.$filename.'.pdf';
        $data['batchnumber'] = $val['batchnumber'];
        $data['create_time'] = date('Y-m-d H:i:s');
        $list[] = $data;
        $modelpdf->batchReplaceAll("{{amazon_report_zn_pdf}}", array_keys($list[0]), $list);
        $znmodel->updateAll(['is_down' => 1, 'update_at' => date("Y-m-d H:i:s")], "id='{$val['id']}'");
        @unlink($url . $filename . '.txt');
        return true;

 

标签:save,提取,url,filename,content,txt,PDF,PHP,dir
From: https://www.cnblogs.com/xiangshihua/p/17440749.html

相关文章

  • catchAdmin+phpEmailer批量发邮件
    前端参数  后端逻辑//多个邮箱配置publicfunctionsystem(){$email_type=input('email_type','1');$field='id,smtp,smtp_port,sender_email_adress,smtp_name,smtp_code,encryption_type';$where[]=......
  • Docker php安装扩展步骤详解
    前言此篇,主要是演示docker-php-source,docker-php-ext-install,docker-php-enable-docker-configure这四个命令到底是用来干嘛的,它们在PHP容器中都做了哪些事情。很多人很不理解在Dockerfile中安装PHP扩展的时候总是出现这几个命令,本篇就就是为你揭开这些命令的神秘面纱而准......
  • 如何将word公式粘贴到PHPCMS里面
    ​ 自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了。一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器)中时,编辑器都无法自动上传图片。需要用户手动一张张上传Word图片。如果只有一张图片还能够接......
  • JasperReport报表导出PDF中文不显示的问题
       首先在JasperReportStudio中加载下载好的中文字体:打开设置页面:Window>>Preferences>>JaspersoftStudio>>Fonts,点击Add添加字体,FamilyName中命名新添加字体名称,TrueType中选择下载的字体文件(.ttf文件),PDFEncoding中选择PDF中中文字体编码格式。     这......
  • php数组比较相等
    在PHP中,可以使用array_diff函数来比较两个数组的差异。该函数返回一个包含两个数组差集的新数组,即只包含在第一个数组中但不包含在第二个数组中的元素。如果两个数组完全相等,则返回一个空数组。以下是一个示例代码:$array1=array("a"=>"apple","b"=>"banana","c"=>"......
  • php半角符号编码
    在PHP中,半角符号的编码方式与全角符号不同。以下是一些常见半角符号的编码示例:空格: &#32; 或者 &nbsp;句号: &#46;冒号: &#58;分号: &#59;左括号: &#40;右括号: &#41;引号: &#34;示例代码如下:<?phpecho"空格:"."&nbsp;"."&#32;"."&......
  • php数值转换函数
    PHP提供了很多用于数值转换的函数,其中最常见的是intval()、floatval()和strval()。intval()函数可以将一个变量的值转换为整数。如果变量是浮点数,则会将其截断成整数;如果变量是字符串,则会尝试将其转换成整数。floatval()函数则可以将变量的值转换为浮点数。如果变量本身就是一个......
  • php怎么删除目录
    在PHP中,可以使用rmdir()函数来删除一个空目录,该函数只能删除空目录。如果要删除非空目录,则需要使用递归方法将目录中的所有文件和子目录都删除掉,然后再删除该目录本身。下面是一个简单的示例代码,演示了如何使用递归方法删除一个非空目录:functiondeleteDirectory($dir){if......
  • 前端自动识别CAD图纸提取信息方法总结
    前言CAD图纸自动识别和提取信息具有许多意义,包括以下几个方面:提高工作效率:传统上,对于大量的CAD图纸,人工识别和提取信息是一项耗时且繁琐的任务。通过自动化这一过程,可以大大提高工作效率,节省时间和人力资源。减少错误和精度提升:人工处理CAD图纸容易出现错误,例如错读数字或......
  • MYSQL提取
    数据库root权限获取方法MYSQL3306端口弱口令爆破sqlmap注入--sql-shell模式网站的数据库配置文件中拿到明文密码信息CVE-2012-2122漏洞一、CVE-2012-2122漏洞介绍当连接MariaDB/MYSQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即使是memcmp()返回一个非......