2012-09-19 27 views
3

是否可以將TCPDF或FPDI PDF作爲字符串提供?我有一個傳入的PDF數組作爲字符串,並且我無法寫入磁盤。我無法在有關此文檔的任何內容中找到任何內容。TCPDF/FPDI可以接受PDF爲字符串嗎?

如果不是,是否有一種有效的方式來存儲/讀取這些PDFs從內存或作爲對象?把它們餵給FPDI?

+0

你的意思是PDF文件名作爲數組中的字符串?或者封裝在數組中的某種原始PDF數據流? – batfastad

+0

數組內的PDF數據。 – jbrain

+0

您可以將它寫入'php:// temp'流,然後將其讀入TCPDF - 請參閱http://php.net/manual/en/wrappers.php.php – SDC

回答

1

FPDI不接受字符串,但我剛發佈的TCPDI除了FDPI的setSourceFile()之外還有一個setSourceData()方法,因爲我碰巧有相同的要求。 TCPDI擁有自己的解析器(tcpdi_parser,基於TCPDF的解析器),它支持1.4以上的PDF,而不需要FPDI的商業插件 - 當使用現有的PDF時,這也可能是有益的。

+0

我已經在另一個項目中使用了這個(TCPDI)。工作得很好! – jbrain

+0

@nullColaShip我正在使用setSourceData()並得到錯誤:'TCPDI_PARSER錯誤[tcpdi-56a25ce24b2d6]:無法找到startxref' – GisMofx

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');