使用Codeigniter创建/下载图像

时间:2015-11-19 00:18:32

标签: php codeigniter pdf

很抱歉这个问题因为它使用Codeigniter困扰了我很长时间。 这就是我在做的事情。 如下所示,我正在显示一个表单,其中有一个按钮“下载”。 此下载按钮应将该图像下载到PDF文件中的详细信息 写在上面(那些在RED框中)。 enter image description here

所以这就是我正在做的过程。

  1. 使用PHP函数 imagecreatefromjpeg 动态创建图像(动态)。
  2. 下载/复制在网址中生成的图像并将其保存在服务器的文件夹中
  3. 使用引用动态创建的图像的mpdf生成PDF。
  4. 我现在可以像下面这样动态创建一个图像。我可以在图像中写入文本(参见图像中的2015文本enter image description here

    我的问题是,当我点击“下载”按钮时,它不应该显示 浏览器中的图像,但自动将其下载到服务器上的文件夹中,然后调用函数MPDF将其转换为PDF文件。这可能吗?

    代码:

    这是用户点击“下载”按钮时调用的方法

    public function download_pdf() {
        $data['image']  = $this -> get_photo();
        $this -> mpdf_convert_pdf();        
    }
    

    这是动态创建图像的功能。创建后,应将其下载到服务器上的指定文件夹位置。

    function get_photo(){       
        //Create an Image on the Fly
        header('Content-Type: image/jpg');
        $imgpath = site_url() . 'assets/images/2316.jpg';
        $img = @imagecreatefromjpeg($imgpath);      
        $white = imagecolorallocate($img, 0, 0, 0);
        $font_path = 'assets/fonts/arial.ttf';
        $text = "2015!";
        imagettftext($img, 100, 0, 300, 300, $white, $font_path, $text);
        imagejpeg($img);
        imagedestroy($img);
    
        //Copy an Image from URL into a server folder
        $content = file_get_contents('http://localhost/run_ms/ccertificates/get_photo');
        file_put_contents('C:\xampp\htdocs\run_ms\assets\images\thumb\Test.png', $content);
    }
    

    这是将图像转换为PDF文件的部分。

    public function mpdf_convert_pdf() {
        include ('application/third_party/mpdf/mpdf.php');
        $mpdf = new mPDF('c', 'Legal', '', '', 5, 5, 5, '5', '5', '0');     
    
        //Display output
        $html = '<img src="C:\xampp\htdocs\run_ms\assets\images\thumb\Test.png">';
    
        //display PDF file
        $mpdf -> WriteHTML($html);
    
        $mpdf -> Output('Converted_pdf', 'D');
        exit ;
    }   
    

    非常感谢专家您可以分享给我的这个查询的任何输入。

2 个答案:

答案 0 :(得分:0)

所以重点是,在您点击的每个“下载”按钮中,pdf应该打开到新标签并首先显示数据?

答案 1 :(得分:0)

为了不在浏览器中显示创建的图像,您需要指定将其保存到服务器的路径。由于我之前的问题是如何下载创建的图像而不是在浏览器中显示。

为此,您需要在fm上指定路径 imagejpeg

所以不要这样做:

imagejpeg($img);

应该这样做:

imagejpeg($img,'C:\xampp\htdocs\rn_ms\assets\images\thumb\test.png');

第二个参数是它将保存在服务器中的路径和文件名,如PHP手册(http://php.net/manual/en/function.imagejpeg.php)中所述。因此,如果未指定路径,它将显示在浏览器中,但如果已指定,则它将作为文件下载到指定的服务器路径中。

希望这对其他开发者有所帮助。 :)