TCPDF / FPDI可以接受PDF作为字符串吗?

时间:2012-09-19 15:01:53

标签: php tcpdf fpdi

是否可以将TCPDF或FPDI PDF作为字符串提供?我有一个传入的PDF数组作为字符串,我无法写入磁盘。我无法在文档中找到任何关于此的内容。

如果没有,是否有一种有效的方法可以从内存或对象中存储/读取这些PDF?将它们送到FPDI?

3 个答案:

答案 0 :(得分:1)

FPDI不接受字符串,但我刚刚发布的TCPDI除了FDPI的setSourceData()之外还有setSourceFile()方法,因为我碰巧有完全相同的要求。 TCPDI有自己的解析器(tcpdi_parser,基于TCPDF的解析器),它支持1.4以上的PDF,而不需要FPDI的商业插件 - 这在处理现有PDF时也可能有用。

答案 1 :(得分:0)

您可以使用stream wraper,..

你可以从

上面的类链接写下wraper.php
header('Content-Type: text/html; charset=utf-8');

require_once('tcpdf/tcpdf.php');
require_once('fpdi/fpdi.php');
require_once('wraper.php');

// Creating new page with PDF as a background
$pdf = new FPDI();
$varInAnyScope = file_get_contents('proposal0.pdf');
$pdf->setSourceFile(VarStream::createReference($varInAnyScope));
$tplIdx = $pdf->importPage(1);
$pdf->AddPage();
$pdf->useTemplate($tplIdx, 0, 0, 0, 0, true);

$pdf->Write(0, "Stack overflow");

ob_clean();
$pdf->Output('WorksheetTest.pdf', 'I');

答案 2 :(得分:0)

如果查看setSourceFile方法文档,将会看到您还可以传递资源或StreamReader。 StreamReader非常有趣的是它还共享一个createByString方法。因此您可以像这样使用它:

use setasign\Fpdi\PdfParser\StreamReader;
//...
$myData = ... ;
$stream = StreamReader::createByString($myData);
$pdf->setSourceFile($stream);
//...

这将避免任何代码重复...希望对以后的人有所帮助...