在FPDI中无法找到给定的流

时间:2018-12-12 06:19:57

标签: php codeigniter pdf fpdi

我正在使用FPDI库将多个pdf文件合并为一个,

遵循本文档https://manuals.setasign.com/fpdi-manual/v2/the-fpdi-class/

我尝试过如下操作

use \setasign\Fpdi\Fpdi;
use \setasign\Fpdi\PdfParser\StreamReader;
function merge()
{
    $file = fopen('https://path/to/s3/file','rb');
    $pdf = new Fpdi();
    $pdf->AddPage();
    $pdf->setSourceFile(new  StreamReader($file));
    $tplIdx = $pdf->importPage(1);
    $pdf->useTemplate($tplIdx, 10, 10, 100);
    $pdf->SetFont('Helvetica');
    $pdf->SetTextColor(255, 0, 0);
    $pdf->SetXY(30, 30);
    $pdf->Write(0, 'This is just a simple text');
    $pdf->Output();
}

当尝试在streamReader中传递url时,我得到无法找到流

如何将s3文件传递到流阅读器并合并。

2 个答案:

答案 0 :(得分:0)

HTTP流包装器不支持查找。

您必须将存储桶下载到临时文件或变量。一个简单的file_get_contents()应该可以做到:

$fileContent = file_get_contents('https://path/to/s3/file','rb');
// ...
$pdf->setSourceFile(StreamReader::createByString($fileContent));

答案 1 :(得分:0)

对于那些尝试从同一服务器加载文件的用户(不适用于这种情况,但可以帮助其他人解决此错误):将 http://example.com/path/file.pdf 更改为这样的本地路径< em> /home/user/public_html/path/file.pdf