【问题标题】:Create/Download an Image using Codeigniter使用 Codeigniter 创建/下载图像
【发布时间】:2015-11-19 00:18:32
【问题描述】:

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

这就是我正在做的过程。

  1. 使用 PHP 函数 imagecreatefromjpeg 动态创建图像(动态)。
  2. 下载/复制在 URL 中生成的图像并将其保存在服务器的文件夹中
  3. 使用 mpdf 引用动态创建的图像生成 PDF。

我现在可以像下面这样动态地创建一个图像。我可以在图像中写入文本的位置(请参阅图像中写入的 2015 年文本)

我的问题是,当我点击“下载”按钮时,它不应该显示 浏览器中的图像,但自动将其下载到服务器上的文件夹中,然后它调用函数 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 ;
}   

非常感谢您在我的这个查询中提供的任何输入。

【问题讨论】:

    标签: php codeigniter pdf


    【解决方案1】:

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

    【讨论】:

    • 您好 Elos,非常感谢您的回复。但我现在已经解决了。我将解决方案分享给大家...
    • 回答时不要问更多问题,尝试回答问题
    • 嗨,Davejal,我在这里发帖是因为我以前不知道答案。这就是我问但没有回答的原因。但是当elos回答我的问题时,我告诉他我已经解决了,我会分享给大家。
    【解决方案2】:

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

    为此,您需要在 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) 中所述。因此,如果没有指定路径,它将显示在浏览器中,但如果指定,则将其作为文件下载到指定的服务器路径中。

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

    【讨论】:

    • 我使用FCPATH和imagejpeg($img, FCPATH . 'assets/images/thumb/test.png');
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2014-05-12
    • 2017-05-05
    相关资源
    最近更新 更多