3

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

如果没有,是否有一种有效的方法可以从内存或作为对象存储/读取这些 PDF?把它们喂给 FPDI?

4

3 回答 3

6

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

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

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

于 2019-02-07T13:07:11.297 回答
1

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

于 2013-10-01T03:02:10.473 回答
1

你可以使用流包装器,..

您可以从上面的类链接中编写 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');
于 2016-02-12T03:34:18.797 回答