是否可以将TCPDF或FPDI PDF作为字符串提供?我有一个传入的PDF数组作为字符串,我无法写入磁盘。我无法在文档中找到任何关于此的内容。
如果没有,是否有一种有效的方法可以从内存或对象中存储/读取这些PDF?将它们送到FPDI?
答案 0 :(得分:1)
FPDI不接受字符串,但我刚刚发布的TCPDI除了FDPI的setSourceData()
之外还有setSourceFile()
方法,因为我碰巧有完全相同的要求。 TCPDI有自己的解析器(tcpdi_parser,基于TCPDF的解析器),它支持1.4以上的PDF,而不需要FPDI的商业插件 - 这在处理现有PDF时也可能有用。
答案 1 :(得分:0)
您可以使用stream wraper,..
你可以从
上面的类链接写下wraper.phpheader('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);
//...
这将避免任何代码重复...希望对以后的人有所帮助...