是否可以将 TCPDF 或 FPDI PDF 作为字符串提供?我有一个传入的 PDF 数组作为字符串,我无法写入磁盘。我无法在文档中找到有关此的任何内容。
如果没有,是否有一种有效的方法可以从内存或作为对象存储/读取这些 PDF?把它们喂给 FPDI?
如果您查看 setSourceFile 方法文档,您会发现您还可以传递资源或 StreamReader。StreamReader 非常有趣的是它还共享一个 createByString 方法。所以你可以像这样使用它:
use setasign\Fpdi\PdfParser\StreamReader;
//...
$myData = ... ;
$stream = StreamReader::createByString($myData);
$pdf->setSourceFile($stream);
//...
这将避免任何代码重复...希望这对将来的某人有所帮助...
FPDI不接受字符串,但是我刚刚发布的setSourceData()
TCPDI 除了 FDPI's 之外还有一个方法setSourceFile()
,因为我碰巧有完全相同的要求。TCPDI 有自己的解析器(tcpdi_parser,基于 TCPDF 的解析器),它支持 1.4 以上的 PDF,而不需要 FPDI 的商业插件 - 这在处理现有 PDF 时也可能很有用。
你可以使用流包装器,..
您可以从上面的类链接中编写 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');