我正在使用TCPDF在運行中創建PDF。在創建PDF之前,我有一個循環,從字符數組取值,將它們插入到一個字符串,提供圖像名稱這是使用代碼IM:(我是新,是很好)TCPDF - 從數組插入圖像,導致緩存錯誤的重複字符
$a= str_split("Foo bar");
$str = "";
walk($a, $str);
function walk($pArray, &$str) {
$i=1;
foreach($pArray as $key=>$value) {
if(is_array($value)) {
walk($value,$str);
} else if($value== " "){
$imvar[$i]="<img src=\"images/space.png\" />";
$str.= $imvar[$i];
$i++;
} else if($value !=" "){
$imvar[$i]="<img src=\"images/$value.png\" />";
$str.= $imvar[$i];
$i++;
}
}
}
因此,這爲陣列中的每個字符(包括圖像名稱a.png,b.png等)創建一個新的圖像標記
這工作正常,我得到所需的效果,除非我在數組中有任何重複的字符,根據我給出的例子。
TCPDF ERROR: [Image] Unable to get image: E:/wamp/www/PDF%20test/cache/mska_2434d8c67d438ea8956284f8725ce42d
我已經通過了對緩存引用tcpdf.php文件中查找:如果有任何重複的字符
TCPDF給出了這樣的錯誤。它使用MD5我相信臨時名稱,但顯然如果使用重複的字符它不喜歡它。
任何幫助將不勝感激。
此代碼(數組中沒有重複字符):
<?php
require_once('tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true,
'UTF-8', false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetFont('helvetica', '', 10);
$pdf->AddPage();
$a= str_split("Fobar");
$str = "";
walk($a, $str);
function walk($pArray, &$str) {
$i=1;
foreach($pArray as $key=>$value) {
if(is_array($value)) {
walk($value,$str);
} else if($value== " "){
$imvar[$i]="<img src=\"images/space.png\" />";
$str.= $imvar[$i];
$i++;
} else if($value !=" "){
$imvar[$i]="<img src=\"images/$value.png\" />";
$str.= $imvar[$i];
$i++;
}
}
}
$html = $str;
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('test_images.pdf', 'I');
?>
,這行不通的(重複字符數組中):
<?php
require_once('tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true,
'UTF-8', false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetFont('helvetica', '', 10);
$pdf->AddPage();
$a= str_split("Fooooobar");
$str = "";
walk($a, $str);
function walk($pArray, &$str) {
$i=1;
foreach($pArray as $key=>$value) {
if(is_array($value)) {
walk($value,$str);
} else if($value== " "){
$imvar[$i]="<img src=\"images/space.png\" />";
$str.= $imvar[$i];
$i++;
} else if($value !=" "){
$imvar[$i]="<img src=\"images/$value.png\" />";
$str.= $imvar[$i];
$i++;
}
}
}
$html = $str;
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('test_images.pdf', 'I');
?>
如果你已經確認它使用md5作爲臨時名稱,那麼我想你可以用一個UUID生成器替換md5。你使用TCPDF的什麼版本? – 2011-05-13 13:42:44
最新版本5.9.078。我將如何實現UUID?謝謝 – tcnarss 2011-05-13 13:46:21
我已經發布了它,但第二次認爲這可能無法幫助你...在哪一行你選擇了md5呼叫? – 2011-05-13 14:01:56