Я использую TCPDF для создания PDF на лету.Перед созданием pdf у меня есть цикл, который берет значения из массива символов и вставляет их в строку, чтобы предоставить имена изображений, это код, который я использую: (я новенький, будь хорошим)
$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 выдает эту ошибку, если есть какие-либо повторяющиеся символы:
TCPDF ERROR: [Image] Unable to get image: E:/wamp/www/PDF%20test/cache/mska_2434d8c67d438ea8956284f8725ce42d
Я просмотрел файл tcpdf.php для ссылоккешированию.Я использую 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');
?>