TCPDFまたはFPDIPDFを文字列としてフィードすることは可能ですか?着信PDFの配列を文字列として持っていますが、ディスクに書き込めません。これに関するドキュメントには何も見つかりませんでした。
そうでない場合、これらのPDFをメモリからまたはオブジェクトとして保存/読み取る効率的な方法はありますか?それらをFPDIに供給するように?
setSourceFileメソッドのドキュメントを見ると、リソースまたはStreamReaderを渡すこともできることがわかります。StreamReaderで非常に興味深いのは、createByStringメソッドも共有していることです。したがって、次のように使用できます。
use setasign\Fpdi\PdfParser\StreamReader;
//...
$myData = ... ;
$stream = StreamReader::createByString($myData);
$pdf->setSourceFile($stream);
//...
これにより、コードの重複が回避されます...これが将来誰かに役立つことを願っています...
FPDIは文字列を受け入れませんが、私がリリースしたばかりのTCPDIには、まったく同じ要件があったため、setSourceData()
FDPIに加えてメソッドがあります。setSourceFile()
TCPDIには独自のパーサー( TCPDFのパーサーに基づくtcpdi_parser)があり、FPDI用の商用アドオンを必要とせずに1.4を超えるPDFをサポートします。これは既存の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');