使用mpdf库将PDF文件上传到Google云端存储

时间:2018-08-09 11:22:40

标签: php pdf google-cloud-storage codeigniter-3 mpdf

我正在使用mpdf库将HTML转换为PDF,并将我的pdf文件成功存储在本地和远程服务器上。但是我不想将pdf文件存储在服务器上的代码存储库中,而是希望利用Google云上可用的存储桶。

/*
    */
    private function generatePDF($params, $quotationId) {
        $location = '/var/www/html/development/pdfs/';
        $html = $this->load->view('quotation', $data, TRUE);
        $filename = "quo_" .time() . ".pdf";
        $mpdf = new \Mpdf\Mpdf(['mode' => 'en-IN', 'format' => 'A4']);
        $mpdf->WriteHTML($html);
        $mpdf->SetHTMLFooter('<p style="text-align: center; text-size: 12px;">This is computer generated quotation. It does not require signature.</p>');
        $pdf = $mpdf->Output($location . $filename, 'F');
        $this->UploadModel->upload($pdf, $filename);
    }

public function upload($pdf, $pdfName) {
        $storage = new StorageClient();
        $bucket = $storage->bucket("bucketname");
        $object = $bucket->upload($pdf, ['name' => $pdfName]);
        $object = $bucket->object($pdfName);
        $object->update(['acl' => []], ['predefinedAcl' => 'PUBLICREAD']);
    }

在这里,我使用了'F'类型,它将pdf文件保存在由我在云服务器上托管的代码存储库中创建的pdfs文件夹中,但我想将其直接存储到Google云存储桶中。

我对Google Cloud和mpdf库没有太多经验,因此正在寻求帮助和指导以实现该功能。

请帮助我。

2 个答案:

答案 0 :(得分:0)

我看到您正在使用Cloud Storage Client Libraries for PHP。

首先,您需要将其安装到计算机上

<item android:drawable="@drawable/botonverdeencendido" android:state_pressed="true"/>
<item android:drawable="@drawable/botonverdeapagado"/>

然后您需要按照指南进行set up authentication

将这些设置为create a bucket后即可存储PDF。

然后用documentation中的代码替换您的上传功能:

composer require google/cloud-storage

答案 1 :(得分:0)

我也遇到了同样的问题,并提出了this solution,希望对您有所帮助。
使用“ S”而不是“ F”参数,因此它将返回字符串数据并将此数据直接传递到上载方法中。